Sobes.tech
Junior

Kokios yra kolekcijų realizacijos Java programavimo kalboje?

sobes.tech AI

Atsakymas iš AI

  • Sąsajos:

    • Collection: Pagrindinė sąsaja visoms kolekcijoms.
    • List: Tvarkinga kolekcija (su indeksais).
    • Set: Kolekcija be pasikartojančių elementų.
    • SortedSet: Tvarkinga kolekcija be pasikartojančių elementų, elementai yra surūšiuoti.
    • Map: Asociatyvus masyvas (raktas-reikšmė).
    • SortedMap: Surūšiuotas asociatyvus masyvas pagal raktus.
    • Queue: Kolekcija elementų saugojimui prieš jų apdorojimą.
    • Deque: Abipusė eilė.
  • Klasės (pagrindinės įgyvendinimo formos):

    • List:
      • ArrayList: Dinaminis masyvas. Greitas prieiga pagal indeksą, lėtos operacijos įterpimo/ištrynimo viduryje.
      • LinkedList: Dviejų nuorodų sąrašas. Lėtas prieiga pagal indeksą, greitos įterpimo/ištrynimo operacijos viduryje.
      • Vector: Pasenęs sinchronizuotas ArrayList analogas.
      • Stack: Vector pogrupis, įgyvendinantis staką (LIFO).
  • Set: - HashSet: Pagrįstas hash lentelės įgyvendinimu. Neteikia elementų tvarkos. - LinkedHashSet: Pagrįstas hash lentelės ir susietojo sąrašo įgyvendinimu. Išlaiko įterpimo tvarką. - TreeSet: Pagrįstas raudonojo-juodojo medžio įgyvendinimu. Elementai surūšiuoti didėjimo tvarka.

  • Map: - HashMap: Pagrįstas hash lentelės įgyvendinimu. Neteikia porų tvarkos. - Hashtable: Pasenęs sinchronizuotas HashMap analogas. - LinkedHashMap: Pagrįstas hash lentelės ir susietojo sąrašo įgyvendinimu. Išlaiko įterpimo tvarką. - TreeMap: Pagrįstas raudonojo-juodojo medžio įgyvendinimu. Poros raktas-reikšmė surūšiuotos pagal raktus.

  • Queue: - PriorityQueue: Prioritetinė eilė. Elementai išrenkami pagal jų natūralų tvarką arba komparatorių. - ArrayDeque: Abipusė eilė, pagrįsta masyvu.

  • Naudingi įrankiai: - Collections: Statiniai metodai darbui su kolekcijomis (rūšiavimas, paieška, sinchronizacija ir kt.).

// Pavyzdys naudojant ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Pavyzdys naudojant HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Dublikatas nebus pridėtas
System.out.println(numbers.size()); // 2
// Pavyzdys naudojant HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Pavyzdys naudojant PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (mažiausias prioritetas)