Sobes.tech
Junior

Kokios kolekcijos egzistuoja Java?

sobes.tech AI

Atsakymas iš AI

Java yra šie pagrindiniai kolekcijų interfeisai, įtraukti į Java Collections Framework:

  • Collection: pagrindinis interfeisas, apibrėžiantis bendras operacijas objektų grupėms. Iš jo paveldi šie sub-interfeisai:

    • List: Tvarkinga kolekcija (sekos). Elementai gali kartotis. Palaiko prieigą pagal indeksą.
      • ArrayList: Dinaminis masyvas. Gerai greitam prieigai pagal indeksą ir pridėjimui pabaigoje. Lėtas įterpimas/šalinimas viduryje.
      • LinkedList: Dviejų krypčių susietas sąrašas. Gerai įterpimui/šalinimui pradžioje ar pabaigoje. Lėtas prieigai pagal indeksą.
      • Vector: Sinchronizuota ArrayList versija. Laikoma pasenusia.
      • Stack: Paveldi iš Vector, įgyvendina stack elgesį (LIFO).
    • Set: Kolekcija, turinti tik unikalius elementus. Nėra garantuojamas tvarkos:
      • HashSet: Įgyvendinta naudojant maišos lentelę. Labiausiai tinka greitam pridėjimui, šalinimui ir tikrinimui. Nėra garantuojama tvarka.
      • LinkedHashSet: Įgyvendinta kaip maišos lentelė + susietas sąrašas. Garantuoja įterpimo tvarką.
      • TreeSet: Įgyvendinta naudojant raudonąjį-juodąjį medį. Laiko elementus surūšiuotame tvarkoje. Lėtesnė nei HashSet, bet greitesnė už LinkedHashSet diapazonų paieškai.
    • Queue: Kolekcija, skirta elementų saugojimui prieš apdorojimą (FIFO - pirmas įeina, pirmas išeina).
      • PriorityQueue: Elementai saugomi pagal jų natūralų tvarką arba palygintoją. Išrenkamas aukščiausio prioriteto elementas.
      • Deque: (Dviguba eilė) Palaiko įterpimą ir šalinimą abiejose pusėse.
        • ArrayDeque: Realizacija pagal masyvą. Efektyvesnė nei LinkedList kaip eilė/stack.
  • Map: Kolekcija, sauganti raktas-reikšmės poras. Raktai yra unikalūs.

    • HashMap: Įgyvendinta naudojant maišos lentelę. Greičiausia pridėjimui, šalinimui ir tikrinimui. Nėra garantuojama tvarka.
    • LinkedHashMap: Įgyvendinta kaip maišos lentelė + susietas sąrašas. Garantuoja įterpimo arba prieigos tvarką.
    • TreeMap: Įgyvendinta naudojant raudonąjį-juodąjį medį. Laiko raktų poras surūšiuotoje tvarkoje pagal raktus. Lėtesnė nei HashMap.
    • HashTable: Sinchronizuota HashMap versija. Laikoma pasenusia.

Taip pat yra pasenusių klasių, kurios nėra JCF dalis, bet kartais naudojamos:

  • Vector
  • Stack
  • Hashtable
  • Enumeration (interfeisas)