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

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!

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.

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1