Sobes.tech
Junior

Care sunt implementările colecțiilor în limbajul de programare Java?

sobes.tech AI

Răspuns de la AI

  • Interfețe:

    • Collection: Interfața de bază pentru toate colecțiile.
    • List: Colecție ordonată (cu indici).
    • Set: Colecție fără duplicate.
    • SortedSet: Colecție fără duplicate, ale cărei elemente sunt sortate.
    • Map: Matrice asociativă (cheie-valoare).
    • SortedMap: Matrice asociativă sortată după chei.
    • Queue: Colecție pentru stocarea elementelor înainte de procesare.
    • Deque: Coada dublu-încuietată.
  • Clase (implementări principale):

    • Pentru List:

      • ArrayList: Array dinamic. Acces rapid după index, operații lente de inserare/ștergere în mijloc.
      • LinkedList: Listă dublu înlănțuită. Acces lent după index, operații rapide de inserare/ștergere în mijloc.
      • Vector: Învechit, sincronizat, echivalent cu ArrayList.
      • Stack: Subclasă a Vector, care implementează un stivă (LIFO).
    • Pentru Set:

      • HashSet: Implementare bazată pe tabel hash. Nu garantează ordinea.
      • LinkedHashSet: Bazat pe tabel hash și listă legată. Menține ordinea de inserție.
      • TreeSet: Bazat pe arbore roșu-negru. Elementele sunt sortate în ordine crescătoare.
    • Pentru Map:

      • HashMap: Bazat pe tabel hash. Nu garantează ordinea perechilor cheie-valoare.
      • Hashtable: Învechit, sincronizat, echivalent cu HashMap.
      • LinkedHashMap: Bazat pe tabel hash și listă legată. Menține ordinea de inserție.
      • TreeMap: Bazat pe arbore roșu-negru. Perechile sunt sortate după chei.
    • Pentru Queue:

      • PriorityQueue: Coadă de prioritate. Elementele sunt extrase în ordinea naturală sau după comparator.
      • ArrayDeque: Implementare a cozii dublu-încuietate bazată pe array.
  • Utilitare:

    • Collections: Metode statice pentru lucrul cu colecții (sortare, căutare, sincronizare etc.).
// Exemplu de utilizare ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Exemplu de utilizare HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Dublura nu va fi adăugată
System.out.println(numbers.size()); // 2
// Exemplu de utilizare HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Exemplu de utilizare PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (cea mai mică prioritate)