Listy reprezentują sekwencyjne uporządkowanie elementów. Mapy są używane do reprezentowania zbioru par klucz / wartość.
Chociaż możesz użyć mapy jako listy, istnieją pewne określone wady takiego rozwiązania.
Utrzymanie porządku:
- Lista z definicji jest uporządkowana. Dodajesz elementy, a następnie możesz ponownie przeglądać listę w kolejności wstawienia pozycji. Kiedy dodajesz elementy do HashMap, nie masz gwarancji, że odzyskasz elementy w tej samej kolejności, w jakiej je umieściłeś. Istnieją podklasy HashMap, takie jak LinkedHashMap, które utrzymają kolejność, ale generalnie kolejność nie jest gwarantowana w przypadku mapy.
Semantyka klucz / wartość:
- Celem mapy jest przechowywanie elementów w oparciu o klucz, którego można użyć do późniejszego pobrania elementu. Podobną funkcjonalność można osiągnąć tylko za pomocą listy w ograniczonym przypadku, gdy klucz jest pozycją na liście.
Czytelność kodu
Rozważ następujące przykłady.
list.add(myObject);
map.put(myKey, myObject);
map.put("1", myObject);
for (Object o : myList)
for (Object o : myMap.values())
Funkcjonalność kolekcji
Niektóre wspaniałe funkcje narzędziowe są dostępne dla list za pośrednictwem klasy Kolekcje. Na przykład ...
Collections.shuffle(myList);
Collections.sort(myList, myComparator);
Mam nadzieję że to pomoże,
Lists
iMaps
są to dwie zupełnie różne struktury danych, z różnymi operacjami i niezmiennikami. Czy możesz wyjaśnić kontekst / wymagania, o których myślisz, gdzie oba byłyby akceptowalne rozwiązania?