Różnice między ArrayList, HashMap i HashSet

Różnice między ArrayList, HashMap i HashSet
Kacpi7
  • Rejestracja:około 4 lata
  • Ostatnio:około 3 lata
  • Postów:35
0

Siemka, jak w tytule, mógłby mi ktoś wytłumaczyć kiedy i dlaczego stosujemy ArrayList, hashSet, HashMap oraz Collection?
Jest jakaś duża róznica między nimi?

Dziękuje!

enedil
one w sumie nie mają prawie nic wspólnego
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
  • Postów:1027
6

HashSet - jak chcesz stwierdzać, czy coś należy do jakiegoś zbioru bądź nie.
HashMap - jak chcesz mieć jakiś zbiór, i powiązane z nim wartości, np. przyporządkowanie, że z "abc" chcesz wiązać wartość "Ala ma kota", a z "bcd", "Kot ma alę". To jest wtedy taka tablica, tylko indeksami są dowolne haszowalne obiekty.
ArrayList - jak chcesz mieć wiele obiektów po kolei, ale nie przejmuje cię szybkie wyszukiwanie w niej, tylko raczej szybka iteracja po niej. Albo, jak masz wiele obiektów i chcesz mieć je jakoś uporządkowane.
Collection - to nie jest nic konkretnego, abstrakcyjna klasa na obiekty które w jakiś sposób są pojemnikiem na inne obiekty.

stivens
ArrayList - jak chcesz mieć wiele obiektów po kolei, ale nie przejmuje cię szybkie wyszukiwanie w niej, - yyy.. wyszukiwanie jest przeciez O(1) tylko ze po indeksie a nie wartosci
enedil
@stivens: dziękuję za konstruktywną uwagę
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
2

Odróżnijmy koncepcje podstawowe
List Map Set
(tu @enedil objaśnił co kiedy) *)
W niektórych językach o Map mówi się Dictionary, ale i tak to są powszechnie znane struktury danych

UPDATE: zarazem w pełni się zgodzę w komentarzem, że List Map i Set nie mają nic wspólnego (są jedynie kontenerami, i tylko to ich łączy). Dwie są Collecion, trzecia nie jest.

a ich implementacje (realizacje) przez array, hash, tree, linked (list) itd. Niektóre są szybsze do wstawiania, inne do odczytu/wyszukiwania, niektóre 'za darmo' sortują, inne dają kolejność przypadkową. To w jakimś sensie jest ważne, ale nie tak bardzo jak istota tych kontenerów

Np zwykle się pisze:
List lista = new ArrayList();
aby w dalszym kodzie się nie wikłać zagadnienia 'Array' tylko patrzeć na problem jako na List

*) @Kacpi7 bez poszukania teoretycznej wiedzy nt struktur danych i stosownych algorytmów trudno pójść dalej


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 9x, ostatnio: AnyKtokolwiek
vpiotr
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
3

LinkedHashMap - jeśli chcesz mieć kolejność wstawiania
TreeMap - jeśli chcesz mieć kolejność wg klucza sortowania (naturalny lub specjalny)
HashMap - jeśli nie interesuje Cię kolejność wyciągania
EnumMap - jeśli kluczem ma być enum
ConcurrentHashMap - jeśli chcesz się do mapy odwoływać wielowątkowo
no i Guava ArrayListMultimap - jeśli chcesz mieć wiele wartości do tego samego klucza

edytowany 1x, ostatnio: vpiotr
AK
a wszystkie są 'Map'

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.