Sobes.tech
Junior

Jaké jsou implementace kolekcí v jazyce Java?

sobes.tech AI

Odpověď od AI

  • Rozhraní:

    • Collection: Základní rozhraní pro všechny kolekce.
    • List: Seřazená kolekce (s indexy).
    • Set: Kolekce bez duplicit.
    • SortedSet: Seřazená kolekce bez duplicit, prvky jsou seřazeny.
    • Map: Asociační pole (klíč-hodnota).
    • SortedMap: Seřazené asociační pole podle klíčů.
    • Queue: Kolekce pro uložení prvků před jejich zpracováním.
    • Deque: Oboustranná fronta.
  • Třídy (hlavní implementace):

    • Pro List:

      • ArrayList: Dynamické pole. Rychlý přístup podle indexu, pomalé operace vkládání/mazání uprostřed.
      • LinkedList: Dvouspojový seznam. Pomalý přístup podle indexu, rychlé operace vkládání/mazání uprostřed.
      • Vector: Zastaralý synchronizovaný ekvivalent ArrayList.
      • Stack: Podtřída Vector, implementující zásobník (LIFO).
    • Pro Set:

      • HashSet: Implementace založená na hash tabulce. Nezaručuje pořadí prvků.
      • LinkedHashSet: Implementace založená na hash tabulce a spojovaném seznamu. Zachovává pořadí vkládání.
      • TreeSet: Implementace založená na červenooranžovém stromu. Prvky jsou seřazeny vzestupně.
    • Pro Map:

      • HashMap: Implementace založená na hash tabulce. Nezaručuje pořadí párů klíč-hodnota.
      • Hashtable: Zastaralý synchronizovaný ekvivalent HashMap.
      • LinkedHashMap: Implementace založená na hash tabulce a spojovaném seznamu. Zachovává pořadí vkládání párů klíč-hodnota.
      • TreeMap: Implementace založená na červenooranžovém stromu. Pary klíč-hodnota jsou seřazeny podle klíčů.
    • Pro Queue:

      • PriorityQueue: Fronta s prioritou. Prvky jsou vybírány podle jejich přirozeného řádu nebo komparátoru.
      • ArrayDeque: Implementace oboustranné fronty založené na poli.
  • Utility:

    • Collections: Poskytují statické metody pro práci s kolekcemi (třídění, hledání, synchronizace atd.).
// Příklad použití ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Příklad použití HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Duplicitní nebude přidáno
System.out.println(numbers.size()); // 2
// Příklad použití HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Příklad použití PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (nejnižší priorita)