Middle
Aprašykite kolekcijų hierarchiją Java.
sobes.tech AI
Atsakymas iš AI
Java kolekcijų hierarchija grindžiama interfeisų rinkiniu, kurie suteikia standartinius būdus grupių objektų reprezentacijai.
Pagrindiniai interfeisai:
Collection: hierarchijos šakninė sąsaja. Apibrėžia pagrindines operacijas, taikomas visoms kolekcijoms: pridėjimą, pašalinimą, elementų buvimo patikrinimą, dydžio nustatymą.Set: kolekcija, neturinti dublių ir neturinti nustatyto elementų tvarkos.List: tvarkyta kolekcija su galimybe pasiekti elementus pagal indeksą. Gali turėti dublių.Queue: kolekcija, skirta elementų saugojimui prieš apdorojimą. Paprastai laikosi FIFO (pirmas įeina, pirmas išeina) taisyklės, bet yra ir kitų įgyvendinimų.Deque: dvipusė eilė. Palaiko elementų pridėjimą ir pašalinimą abiejose pusėse.Map: kolekcija, sauganti poras "raktas-reikšmė". Raktai turi būti unikalūs. Nereikia plėstiCollectionsąsajos.
Pagrindiniai įgyvendinimo klasės (pavyzdžiai):
| Interfeisas | Įgyvendinančios klasės (pavyzdžiai) | Aprašymas |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Be dublių. HashSet - be tvarkos, LinkedHashSet - išlaiko pridėjimo tvarką, TreeSet - surūšiuotas. |
List |
ArrayList, LinkedList, Vector |
Tvarkyta. ArrayList - pagrįsta masyvu, LinkedList - pagrįsta sujungtu sąrašu, Vector - sinchronizuota (pasenusi). |
Queue |
LinkedList, PriorityQueue |
Apdorojimui. LinkedList - FIFO, PriorityQueue - pagal prioritetus. |
Deque |
ArrayDeque, LinkedList |
Dvipusė eilė. ArrayDeque - pagrįsta masyvu, LinkedList - pagrįsta sujungtu sąrašu. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Raktas-reikšmė. HashMap - be garantuotos tvarkos, LinkedHashMap - išlaiko pridėjimo/darbo tvarką, TreeMap - surūšiuotas pagal raktus, Hashtable - sinchronizuota (pasenusi). |
Pavyzdys naudojant ArrayList:
// Sukurti `ArrayList` iš eilutinių reikšmių
List<String> fruits = new ArrayList<>();
// Pridėti elementus
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Pasiekti pagal indeksą
String firstFruit = fruits.get(0); // Apple
// Kolekcijos dydis
int size = fruits.size(); // 3
Pavyzdys naudojant HashSet:
// Sukurti `HashSet` iš sveikųjų skaičių
Set<Integer> numbers = new HashSet<>();
// Pridėti elementus (dublikatai ignoruojami)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignoruojama
// Kolekcijos dydis
int size = numbers.size(); // 2
Pavyzdys naudojant HashMap:
// Sukurti `HashMap`: raktas - String, reikšmė - Integer
Map<String, Integer> ages = new HashMap<>();
// Pridėti poras
ages.put("Alice", 30);
ages.put("Bob", 25);
// Gauti reikšmę pagal raktą
int aliceAge = ages.get("Alice"); // 30
// Patikrinti, ar yra raktas
boolean hasBob = ages.containsKey("Bob"); // tiesa