Sobes.tech
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ėsti Collection są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