Sobes.tech
Middle
164

Ispričaj mi o strukturi Collection okvira u Javi.

Одговор од АИ

sobes.tech АИ

Java Collections framework pruža ujedinjenu arhitekturu za predstavljanje i manipulaciju kolekcijama objekata. Njegove glavne komponente:

  1. Interfejsi: Definišu apstraktne tipove kolekcija.

    • Collection: korenski interfejs koji predstavlja grupu objekata.
    • List: poređana kolekcija koja omogućava duplikate.
    • Set: kolekcija bez duplikata.
    • SortedSet: Set čiji su elementi sortirani.
    • NavigableSet: SortedSet koji pruža metode za navigaciju kroz sortirani skup.
    • Queue: kolekcija čiji se elementi obrađuju u određenom redosledu (obično FIFO ili LIFO).
    • Deque: dvostruka red.
    • Map: kolekcija parova ključ-vrednost. Ne nasleđuje Collection.
    • SortedMap: Map čiji su ključevi sortirani.
    • NavigableMap: SortedMap koji pruža metode za navigaciju kroz sortiranu mapu.
    • Iterator: omogućava iteraciju kroz elemente kolekcije.
    • ListIterator: proširuje Iterator za navigaciju kroz listu u oba smera i modifikaciju liste.
  2. Implementacije: Konkretne realizacije interfejsa.

    • Za List: ArrayList, LinkedList, Vector (Legacy).
    • Za Set: HashSet, LinkedHashSet, TreeSet.
    • Za Queue: LinkedList, PriorityQueue.
    • Za Deque: ArrayDeque, LinkedList.
    • Za Map: HashMap, LinkedHashMap, TreeMap, Hashtable (Legacy).
  3. Algoritmi: Statičke metode u klasi Collections za izvođenje opštih operacija nad kolekcijama, kao što su sortiranje, pretraživanje, mešanje i druge.

  4. Utilitarni (Utilities): Klasa Arrays za rad sa nizovima, klasa Objects za opšte operacije sa objektima.

Primer upotrebe:

// Kreiranje liste ArrayList
List<String> imena = new ArrayList<>();
imena.add("Alice");
imena.add("Bob");
imena.add("Charlie");

// Iteracija kroz listu
for (String ime : imena) {
    System.out.println(ime);
}

// Sortiranje liste
Collections.sort(imena);
System.out.println("Sortirana imena: " + imena);

// Kreiranje skupa HashSet
Set<Integer> brojevi = new HashSet<>();
brojevi.add(1);
brojevi.add(2);
brojevi.add(1); // Duplikat se ignoriše
System.out.println("Skup brojeva: " + brojevi);

// Kreiranje mape HashMap
Map<String, Integer> godine = new HashMap<>();
godine.put("Alice", 30);
godine.put("Bob", 25);
System.out.println("Godine: " + godine);

Glavni odnosi između interfejsa:

Collection <--- List, Set, Queue, Deque
List <--- ArrayList, LinkedList, Vector
Set <--- HashSet, LinkedHashSet, TreeSet
SortedSet <--- TreeSet
NavigableSet <--- TreeSet
Queue <--- LinkedList, PriorityQueue
Deque <--- ArrayDeque, LinkedList

Map <--- HashMap, LinkedHashMap, TreeMap, Hashtable
SortedMap <--- TreeMap
NavigableMap <--- TreeMap

Ova struktura pruža fleksibilnost i mogućnost izbora najpogodnije implementacije za konkretan zadatak.