Wann benutz ich was: ArrayList, HashMap, HashSet?
Was gibt es für gravierende Unterschiede, also ich weiß bei einer HashMap brauch ich einen Schlüssel, also fast schon wie eine Datenbank. Eine Liste ist sortiert und ein Set ist irgendwie sortiert (kommt auf den Hash-Wert drauf an), und hashing ist auch performanter, aber ich kann ja auch Iteratoren, etc. verwenden, also ist es eigtl. egal was ich nehme? Ohne jetzt auf die Geschwindigkeit zu achten.
3 Antworten
Eine Liste (ArrayList, LinkedList) ist nicht unbedingt sortiert, sondern die Elemente habe eine Reihenfolge, die sich aus dem Einfügen ergibt. Bei einer Liste können gleiche Elemente auch mehrfach vorkommen. Auf die einzelnen Elemente kann man über einen numerischen Index (von 0 bis size()-1) zugreifen.
Bei einem Set (HashSet, TreeSet, deutsch: Menge) hat man nur die Information, ob ein Element enthalten ist oder nicht, es steht nicht an einer bestimmten Stelle (zumindest ist diese Information nicht von außen zugreifbar).
Maps (HashMap, TreeMap) heißen in anderen Programmiersprachen Dictionary (Wörterbuch). Da kann man auf einzelne Werte über einen ey (Schlüssel) zugreifen, der nicht unbedingt numerisch sein muss. Zu jedem Key gibt es genau einen Wert.
Na ja die Unterschiede sind ja prägnant.
Als Praxisbeispiel: In einem Onlineshop möchte ich bestimmte Werte der View zur Verfügung stellen, die ich mit Hilfe einer HashMap zur Verfügung stelle. In einer JSP kann ich nun mit dem Key den benötigten Wert abrufen. Die Keys könnten statische Konstanten sein.
Oder ein Beispiel für eine List: Ich lade Daten aus der Datenbank (die haben auch eine bestimmte Reihenfolge die ich mit der order by Klausel festlege). Diese Daten speichere ich in eine List. Auf die Daten muss ich ja sehr wahrscheinlich nicht mit einem Key zugreifen.
Nimm das, was am besten passt. Wie du schon erkannt hast, hat die HashMap einen Key, wenn du aber keinen hast dann nimm die Liste (die nicht sortiert ist so weit ich weiss), usw. Gibt zig Datenstrukturen die du nutzen kannst, Frage ist halt, welche die sinnvollste ist. Das kann ich dir aber nicht sagen, weil ich kA hab was du vor hast.