Junior
Jakie są implementacje kolekcji w języku programowania Java?
sobes.tech AI
Odpowiedź od AI
-
Interfejsy:
Collection: Podstawowy interfejs dla wszystkich kolekcji.List: Kolekcja uporządkowana (z indeksami).Set: Kolekcja bez duplikatów.SortedSet: Kolekcja bez duplikatów, elementy są posortowane.Map: Tablica asocjacyjna (klucz-wartość).SortedMap: Posortowana tablica asocjacyjna według kluczy.Queue: Kolekcja do przechowywania elementów przed ich przetwarzaniem.Deque: Kolejka dwustronna.
-
Klasy (główne implementacje):
-
Dla
List:ArrayList: Dynamiczna tablica. Szybki dostęp po indeksie, wolne operacje wstawiania/usuwania w środku.LinkedList: Lista dwukierunkowa. Wolny dostęp po indeksie, szybkie wstawianie/usuwanie w środku.Vector: Przestarzała, zsynchronizowana, odpowiednikArrayList.Stack: PodklasaVector, implementuje stos (LIFO).
-
Dla
Set:HashSet: Implementacja oparta na tablicy haszującej. Nie gwarantuje kolejności.LinkedHashSet: Oparta na tablicy haszującej i liście powiązanej. Zachowuje kolejność wstawiania.TreeSet: Oparta na drzewie czerwono-czarnym. Elementy są posortowane rosnąco.
-
Dla
Map:HashMap: Oparta na tablicy haszującej. Nie gwarantuje kolejności par klucz-wartość.Hashtable: Przestarzała, zsynchronizowana, odpowiednikHashMap.LinkedHashMap: Oparta na tablicy haszującej i liście powiązanej. Zachowuje kolejność wstawiania.TreeMap: Oparta na drzewie czerwono-czarnym. Parę klucz-wartość posortowano według kluczy.
-
Dla
Queue:PriorityQueue: Kolejka priorytetowa. Elementy są wyciągane w kolejności naturalnej lub przez komparator.ArrayDeque: Implementacja kolejki dwustronnej opartej na tablicy.
-
-
Narzędzia:
Collections: Statyczne metody do pracy z kolekcjami (sortowanie, wyszukiwanie, synchronizacja itp.).
// Przykład użycia ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Przykład użycia HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Duplikat nie zostanie dodany
System.out.println(numbers.size()); // 2
// Przykład użycia HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Przykład użycia PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (najniższy priorytet)