Listen repräsentieren eine sequentielle Reihenfolge von Elementen. Karten werden verwendet, um eine Sammlung von Schlüssel / Wert-Paaren darzustellen.
Während Sie eine Karte als Liste verwenden könnten, gibt es einige eindeutige Nachteile.
Reihenfolge beibehalten:
- Eine Liste wird per Definition bestellt. Sie fügen Elemente hinzu und können dann die Liste in der Reihenfolge durchlaufen, in der Sie die Elemente eingefügt haben. Wenn Sie einer HashMap Elemente hinzufügen, wird nicht garantiert, dass Sie die Elemente in derselben Reihenfolge abrufen, in der Sie sie abgelegt haben. Es gibt Unterklassen von HashMap wie LinkedHashMap, die die Reihenfolge beibehalten, aber im Allgemeinen wird die Reihenfolge mit einer Map nicht garantiert.
Schlüssel- / Wertsemantik:
- Der Zweck einer Karte besteht darin, Elemente basierend auf einem Schlüssel zu speichern, mit dem das Element zu einem späteren Zeitpunkt abgerufen werden kann. Eine ähnliche Funktionalität kann mit einer Liste nur in dem begrenzten Fall erreicht werden, in dem der Schlüssel zufällig die Position in der Liste ist.
Lesbarkeit
des Codes Betrachten Sie die folgenden Beispiele.
list.add(myObject);
map.put(myKey, myObject);
map.put("1", myObject);
for (Object o : myList)
for (Object o : myMap.values())
Sammlungsfunktionalität
Einige großartige Dienstprogrammfunktionen stehen für Listen über die Sammlungsklasse zur Verfügung. Zum Beispiel ...
Collections.shuffle(myList);
Collections.sort(myList, myComparator);
Hoffe das hilft,
Lists
undMaps
sind zwei völlig unterschiedliche Datenstrukturen mit unterschiedlichen Operationen und Invarianten. Können Sie den Kontext / die Anforderungen erklären, an die Sie denken, wo beide akzeptable Lösungen wären?