dedlfix: woher weiß ich welches java werkzeug wieviel laufzeit verbrauch

Beitrag lesen

Tach!

ich habe gerade erstaunt festgestellt, dass der contains-befehl einer arraylist viel mehr laufzeit verbraucht, als der containskey-befehl einer hashmap.

Die Werte liegen unsortiert vor und können auch mehrfach vorkommen. Um das Vorkommen eines Wertes zu ermitteln, muss durch die Liste
gelaufen werden, zumindest bis zum ersten Vorkommen. Schlüssel hingegen sind eindeutig und können sortiert abgelegt werden (ob das der Fall ist, weiß ich nicht), und dann gibt es Verfahren, um sehr schnell einen Wert in einer sortierten Liste zu finden.

könnt ihr mir sagen wie ich generell herausfinden kann, wieviel laufzeit das ausführen einer methode eines bestimmten java objekts benötigt? (hierbei meine ich java objekte die von den entwicklern von java erstellt wurden, nicht meine eigenen objekte)

Das steht mitunter in der Dokumentation.

ArrayList und HashMap haben beide die funktion contains bzw. containskey

ArrayList hat nur contains() - aus verständlichen Gründen. Es existiert also kein Mechanismus, um gezielt auf einen Wert zuzugreifen, außer dem numerischen Index. Bei der HashMap muss dir ebenfalls der Schlüssel bekannt sein, um schnell zugreifen zu können. In beiden Fällen ist ein Suchen in den Werten gleich langsam. Das kann man nur beschleunigen, indem man die Werte sortiert. Dann kann man die üblichen schnell arbeitenden Suchalgorithmen für sortierte Datenmengen verwenden.

ArrayList<String> eids = new ArrayList();
if(eids.containsKey(list.get(i)[0]))

Das passt nicht zusammen. Wenn du contains() mit containsKey() vergleichst, bekommst du das Ergebnis von Äpfeln und Birnen.

dedlfix.