Sobes.tech
Junior

Papaskokite apie kolekcijų hierarchiją Java.

sobes.tech AI

Atsakymas iš AI

Java kolekcijų hierarchija sukurta aplink du pagrindinius sąsajos: Collection ir Map. Ji apibrėžta java.util pakete.

  • Collection<E>: Pagrindinė sąsaja daugumai kolekcijų. Reprezentuoja elementų grupę. Nenurodo tvarkos ar unikalumo garantijos:
    • List<E>: Tvarkoma kolekcija (eilė). Elementai turi tam tikrą indeksą. Gali būti pasikartojimų:
      • ArrayList<E>: Įgyvendinimas remiantis masyvu. Greitas atsitiktinis prieigos, lėtas įterpimas/šalinimas viduryje:
      • LinkedList<E>: Įgyvendinimas remiantis susietu sąrašu. Lėtas atsitiktinis prieigos, greitas įterpimas/šalinimas pradžioje ar pabaigoje:
      • Vector<E>: Pasenusi sinchronizuota klasė. Panaši į ArrayList, bet saugesnė kelių gijų aplinkoje (ir mažiau efektyvi):
      • Stack<E>: Pasenusi klasė, išplečianti Vector ir įgyvendinanti stako elgseną (LIFO):
    • Set<E>: Kolekcija, turinti unikalius elementus:
      • HashSet<E>: Įgyvendinimas remiantis maišos lentele. Nesortuotas. Greitos operacijos add, remove, contains:
      • LinkedHashSet<E>: Išlaiko įterpimo tvarką:
      • SortedSet<E>: Rūšiuotas rinkinys didėjimo tvarka:
        • TreeSet<E>: Įgyvendinimas remiantis raudonai-juoda medžiu. Garantuoja rūšiuotą tvarką:
    • Queue<E>: Kolekcija, skirta elementų saugojimui prieš apdorojimą, dažnai FIFO tvarka:
      • PriorityQueue<E>: Prioritetų eilė. Elementai išgaunami pagal jų prioritetą:
      • Deque<E>: (Dviguba eilė) Dviejų galų eilė. Palaiko įterpimo ir išėmimo operacijas iš abiejų pusių:
        • ArrayDeque<E>: Dinaminė masyvo pagrindu įgyvendinimas. Greitesnė nei LinkedList naudojant kaip staką ar eilę:
  • Map<K, V>: Objektas, kuris žemėlapiuoja raktus į reikšmes. Raktai unikalūs, reikšmės gali kartotis:
    • HashMap<K, V>: Įgyvendinimas remiantis maišos lentele. Nesortuotas. Greitos operacijos put, get, remove:
    • LinkedHashMap<K, V>: Išlaiko įterpimo arba prieigos tvarką:
    • SortedMap<K, V>: Rūšiuota pagal raktus:
      • TreeMap<K, V>: Įgyvendinimas remiantis raudonai-juoda medžiu. Garantuoja rūšiuotą tvarką pagal raktus:
    • Hashtable<K, V>: Pasenusi sinchronizuota klasė. Panaši į HashMap, bet saugesnė kelių gijų aplinkoje:

Pagrindinės sąsajos:

Sąsaja Aprašymas Tvarka Unikalumas Dublikatai
Collection Elementų grupė +/- +/- Taip
List Tvarkoma kolekcija Taip Ne Taip
Set Unikalių elementų kolekcija +/- Taip Ne
Queue Kolekcija apdorojimui (FIFO) Taip Ne Taip
Deque Dviejų galų eilė Taip Ne Taip
Map Raktas-reikšmė +/- Pagal raktą Taip
SortedSet Rūšiuotas rinkinys Taip Taip Ne
SortedMap Rūšiuota pagal raktus kortelė Taip Pagal raktą Taip

Pavyzdys naudojimo:

// ArrayList naudojimo pavyzdys
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice

// HashSet naudojimo pavyzdys
Set<Integer> uniqueNumbers = new HashSet<>();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(1); // Dublikatas ignoruojamas
System.out.println(uniqueNumbers.size()); // 2

// HashMap naudojimo pavyzdys
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30