lista:
+łatwo można przejść po wszystkich elementach
+można mieć jakiś porządek i dodawać element w określonym miejscu
--bardzo wolne wyszukiwanie konkretnego elementu
mapa:
++baaardzo szybkie wyszukiwanie po kluczu
+łatwiej się pisze kod do wyszukiwania(robi się get() i tyle)
-/+(zależy od sytuacji) nie ma duplikatów(z tym samym kluczem)
-nie ma porządku
-trochę więcej pamięci, ale różnica nie jest aż tak duża
Tak więc czego używać?
Odpowiedź jest prosta. Jeżeli często wyszukujemy elementu po kluczu to używamy mapy, a jak robimy coś dla wszystkich elementów to listy.
W większym programie należy używać obu tych struktur w zależności od sytuacji.
Istnieje też klasa LinkedHashMap, która łączy zalety listy(porządek, łatwe przechodzenie po wszystkich) oraz mapy(szybkie i proste wyszukiwanie). Zużywa jednak trochę więcej pamięci niż mapa oraz niektóre operacje są nieznacznie droższe.
Acha, jeszcze jedna uwaga.
Są dwa rodzaje listy:
LinkedList-normalna lista
ArrayList-działa jak Vector z C++, wstawianie w środek jest kosztowne, odwołanie do n-tego elementu szybkie