Middle
Opisz hierarchię kolekcji w Java.
sobes.tech AI
Odpowiedź od AI
Hierarchia kolekcji w Javie opiera się na zestawie interfejsów, które zapewniają standardowy sposób reprezentowania grup obiektów.
Główne interfejsy:
Collection: podstawowy interfejs hierarchii. Definiuje podstawowe operacje, które można stosować do wszystkich kolekcji: dodawanie, usuwanie, sprawdzanie obecności elementów, określanie rozmiaru.Set: kolekcja bez duplikatów i bez określonego porządku elementów.List: uporządkowana kolekcja z dostępem do elementów po indeksie. Może zawierać duplikaty.Queue: kolekcja przeznaczona do przechowywania elementów przed przetwarzaniem. Zazwyczaj przestrzega zasady FIFO (First-In, First-Out), ale istnieją też inne implementacje.Deque: dwustronna kolejka. Obsługuje dodawanie i usuwanie elementów z obu końców.Map: kolekcja przechowująca pary "klucz-wartość". Klucze muszą być unikalne. Nie rozszerza interfejsuCollection.
Główne klasy implementujące te interfejsy (przykłady):
| Interfejs | Klasy implementujące (przykłady) | Opis |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Bez duplikatów. HashSet - bez porządku, LinkedHashSet - zachowuje kolejność dodawania, TreeSet - posortowany. |
List |
ArrayList, LinkedList, Vector |
Uporządkowana. ArrayList - oparta na tablicy, LinkedList - oparta na liście powiązanej, Vector - zsynchronizowana (przestarzała). |
Queue |
LinkedList, PriorityQueue |
Do przetwarzania. LinkedList - FIFO, PriorityQueue - oparta na priorytetach. |
Deque |
ArrayDeque, LinkedList |
Dwustronna kolejka. ArrayDeque - oparta na tablicy, LinkedList - oparta na liście powiązanej. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Klucz-wartość. HashMap - bez gwarantowanego porządku, LinkedHashMap - zachowuje kolejność dodawania/odwołań, TreeMap - posortowana po kluczach, Hashtable - zsynchronizowana (przestarzała). |
Przykład użycia ArrayList:
// Tworzenie ArrayListy stringów
List<String> fruits = new ArrayList<>();
// Dodawanie elementów
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Dostęp po indeksie
String firstFruit = fruits.get(0); // Apple
// Rozmiar kolekcji
int size = fruits.size(); // 3
Przykład użycia HashSet:
// Tworzenie HashSetu integerów
Set<Integer> numbers = new HashSet<>();
// Dodawanie elementów (duplikaty są ignorowane)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignorowane
// Rozmiar kolekcji
int size = numbers.size(); // 2
Przykład użycia HashMap:
// Tworzenie HashMap: klucz - String, wartość - Integer
Map<String, Integer> ages = new HashMap<>();
// Dodawanie par klucz-wartość
ages.put("Alice", 30);
ages.put("Bob", 25);
// Pobieranie wartości po kluczu
int ageAlice = ages.get("Alice"); // 30
// Sprawdzanie, czy klucz istnieje
boolean hasBob = ages.containsKey("Bob"); // true