Sobes.tech
Middle

Aprakstiet kolekciju hierarhiju Java.

sobes.tech AI

Atbilde no AI

Java kolekciju hierarhija balstās uz saskarnēm, kas nodrošina standarta veidus objektu grupu attēlošanai.

Galvenās saskarnes:

  • Collection: hierarhijas saknes saskarne. Definē pamatoperācijas, kas piemērojamas visām kolekcijām: pievienošanu, dzēšanu, elementu klātbūtnes pārbaudi, izmēra noteikšanu.
  • Set: kolekcija, kas nesatur dublikātus un nav noteikts elementu kārtības.
  • List: sakārtota kolekcija ar iespēju piekļūt elementiem pēc indeksa. Var saturēt dublikātus.
  • Queue: kolekcija, paredzēta elementu glabāšanai pirms apstrādes. Parasti ievēro FIFO (pirmo ienākošo, pirmo iznākšo) noteikumu, bet ir arī citas realizācijas.
  • Deque: divvirzienu rinda. Atbalsta elementu pievienošanu un dzēšanu abos galos.
  • Map: kolekcija, kas glabā pārus "atslēga-vērtība". Atslēgas jābūt unikālām. Nepaplašina Collection saskarni.

Galvenās realizācijas klases (piemēri):

Saskarne Realizācijas klases (piemēri) Apraksts
Set HashSet, LinkedHashSet, TreeSet Bez dublikātiem. HashSet - bez kārtības, LinkedHashSet - saglabā pievienošanas kārtību, TreeSet - sakārtots.
List ArrayList, LinkedList, Vector Sakārtots. ArrayList - balstīts uz masīvu, LinkedList - balstīts uz saistītu sarakstu, Vector - sinhronizēts (novecojis).
Queue LinkedList, PriorityQueue Apstrādei. LinkedList - FIFO, PriorityQueue - pēc prioritātēm.
Deque ArrayDeque, LinkedList Divvirzienu rinda. ArrayDeque - balstīts uz masīvu, LinkedList - balstīts uz saistītu sarakstu.
Map HashMap, LinkedHashMap, TreeMap, Hashtable Atslēga-vērtība. HashMap - bez garantētas kārtības, LinkedHashMap - saglabā pievienošanas/piekļuves kārtību, TreeMap - sakārtots pēc atslēgām, Hashtable - sinhronizēts (novecojis).

Piemērs ArrayList izmantošanai:

// Izveidot `ArrayList` no virkņu
List<String> fruits = new ArrayList<>();
// Pievienot elementus
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Pieejas pēc indeksa
String firstFruit = fruits.get(0); // Apple
// Kolekcijas lielums
int size = fruits.size(); // 3

Piemērs HashSet izmantošanai:

// Izveidot `HashSet` no veselu skaitļu
Set<Integer> numbers = new HashSet<>();
// Pievienot elementus (dublikāti tiek ignorēti)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignorēts
// Kolekcijas lielums
int size = numbers.size(); // 2

Piemērs HashMap izmantošanai:

// Izveidot `HashMap`: atslēga - String, vērtība - Integer
Map<String, Integer> ages = new HashMap<>();
// Pievienot pārus
ages.put("Alice", 30);
ages.put("Bob", 25);
// Iegūt vērtību pēc atslēgas
int aliceAge = ages.get("Alice"); // 30
// Pārbaudīt, vai ir atslēga
boolean hasBob = ages.containsKey("Bob"); // patiesi