Sobes.tech
Middle

Írja le a Java gyűjtemények hierarchiáját.

sobes.tech MI

Válasz az MI-től

A Java gyűjteményhierarchia egy interfész-készletre épül, amelyek szabványos módon képviselik az objektumcsoportokat.

Fő interfészek:

  • Collection: a hierarchia gyökérinterfésze. Meghatározza az alapműveleteket, amelyek minden gyűjteményre alkalmazhatók: hozzáadás, törlés, elemek ellenőrzése, méret meghatározása.
  • Set: olyan gyűjtemény, amely nem tartalmaz duplikátumokat és nincs meghatározott sorrendje az elemeknek.
  • List: rendezett gyűjtemény, amelyhez index alapján lehet hozzáférni az elemekhez. Duplikátumokat tartalmazhat.
  • Queue: olyan gyűjtemény, amely az elemek tárolására szolgál feldolgozás előtt. Általában FIFO (First-In, First-Out) szabályt követ, de léteznek más megvalósítások is.
  • Deque: kétszárnyú sor. Támogatja az elemek hozzáadását és törlését mindkét végén.
  • Map: kulcs-érték párokat tároló gyűjtemény. A kulcsoknak egyedinek kell lenniük. Nem bővíti a Collection interfészt.

Fő megvalósító osztályok (példák):

Interfész Megvalósító osztályok (példák) Leírás
Set HashSet, LinkedHashSet, TreeSet Duplikátumokat nem tartalmaz. HashSet - rendezetlen, LinkedHashSet - megőrzi a hozzáadás sorrendjét, TreeSet - rendezett.
List ArrayList, LinkedList, Vector Rendezett. ArrayList - tömb alapú, LinkedList - láncolt lista, Vector - szinkronizált (elavult).
Queue LinkedList, PriorityQueue Feldolgozásra. LinkedList - FIFO, PriorityQueue - prioritások alapján.
Deque ArrayDeque, LinkedList Kétszárnyú sor. ArrayDeque - tömb alapú, LinkedList - láncolt lista.
Map HashMap, LinkedHashMap, TreeMap, Hashtable Kulcs-érték párok. HashMap - nem garantálja a sorrendet, LinkedHashMap - megőrzi a hozzáadás/delérés sorrendjét, TreeMap - rendezett kulcs szerint, Hashtable - szinkronizált (elavult).

Példa az ArrayList használatára:

// ArrayList létrehozása stringekhez
List<String> fruits = new ArrayList<>();
// Elemek hozzáadása
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Hozzáférés index alapján
String firstFruit = fruits.get(0); // Apple
// Gyűjtemény mérete
int size = fruits.size(); // 3

Példa a HashSet használatára:

// HashSet létrehozása egész számokhoz
Set<Integer> numbers = new HashSet<>();
// Elemek hozzáadása (duplikátumokat figyelmen kívül hagyva)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Figyelmen kívül hagyva
// Gyűjtemény mérete
int size = numbers.size(); // 2

Példa a HashMap használatára:

// HashMap létrehozása: kulcs - String, érték - Integer
Map<String, Integer> ages = new HashMap<>();
// Pár hozzáadása
ages.put("Alice", 30);
ages.put("Bob", 25);
// Érték lekérése kulcs alapján
int aliceAge = ages.get("Alice"); // 30
// Kulcs létezésének ellenőrzése
boolean hasBob = ages.containsKey("Bob"); // igaz