wtorek, 2 kwietnia 2013

Kolekcja w Javie

Krótki opis kolekcji w Javie, z których zawsze jakiegoś szczegółu nie pamiętam i muszę szukać. Chciałem, choć w telegraficznym skrócie tutaj to zebrać.
Kolekcja Opis
ArrayList Sekwencja indeksowana o zmiennych rozmiarach
LinkedList Sekwencja uporządkowana umożliwiająca efektywne wstawianie i usuwanie dowolnej pozycji
HashSet Kolekcja nieuporządkowana, która nie dopuszcza duplikatów.
TreeSet Zbiór uporządkowany. Nie dopuszcza duplikatów
EnumSet Zbiór wartości typu wyliczeniowego. Nie dopuszcza duplikatów
LinkedHashSet Zbiór zapamiętujący kolejność wstawiania elementów. Nie dopuszcza duplikatów.
PriorityQueue Kolekcja pozwalająca na efektywne usuwanie najmniejszego elementu.
HashMap Struktura danych przechowująca asocjacje klucz -> wartość.
TreeMap Mapa o kluczach uporządkowanych.
EnumMap Mapa, której klucze należą do typu wyliczeniowego.
private enum BmiComponentNames {MASS, TALL}
EnumMap<BmiComponentNames, Float> bmiComponents = new EnumMap<BmiComponentNames, Float>BmiComponentNames.class);
bmiComponents.put(BmiComponentNames.MASS, 79f);
bmiComponents.put(BmiComponentNames.TALL, 185f);
LinkedHashMap Mapa zapamiętująca porządek, w którym umieszczane były asocjacje.
WeakHashMap Mapa, której wartości mogą być odzyskiwane przez mechanizm odzyskiwania nieużytków, gdy nie są używane nigdzie indziej.
IdentityHashMap Mapa o kluczach porównywanych za pomocą operatora == a nie metody equals()

Główne różnice pomiędzy implementacjami

List Set
Dopuszcza duplikaty. Nie dopuszcza duplikatów.
Kolekcja uporządkowana. Kolekcja nieuporządkowana.
Używa metody equals() do porównywania elementów podczas wstawiania.
Najpopularniejsze implementacje: ArrayList, Vector, LinkedList
Ciekawe omówienie różnic pomiędzy ArrayList, a LinkedList.
Najpopularniejsze implementacje: HashSet, TreeSet, LinkedHashSet
Na podstawie artykułów w Internecie oraz książki Horstmana i Cornella "Core Java 2 Techniki Zaawansowane".