Sobes.tech
Junior

Mi a különbség a List és a Set között Java-ban?

sobes.tech MI

Válasz az MI-től

Fő különbségek:

  1. Elemek sorrendje:
    • List megőrzi az elemek hozzáadásának sorrendjét.
    • Set nem garantálja az elemek sorrendjét (attól függően, hogy milyen implementációt használunk, például a LinkedHashSet megőrzi a beszúrás sorrendjét).
  2. Duplikátumok:
    • List megenged duplikált elemeket.
    • Set csak egyedi elemeket tartalmaz.
  3. Hozzáférés az elemekhez:
    • List lehetővé teszi az elemek index szerinti elérését.
    • Set nem biztosít közvetlen hozzáférést az elemekhez index szerint, az elérés iterator vagy ciklus segítségével történik.
  4. Teljesítmény:
    • A List-ben végzett keresési és hozzáadási műveletek sok elem esetén lassabbak lehetnek, mint a Set-ben (például a HashSet esetén).
    • A Set-ben a hozzáadás és törlés műveletek (például a HashSet) általában átlagos állandó időkomplexitással rendelkeznek.

Példa:

// Lista, amely megengedi a duplikátumokat és megőrzi a sorrendet
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Kimenet: [Apple, Banana, Apple]

// Halmaz, amely csak egyedi elemeket tartalmaz
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Kimenet: [Apple, Banana] (a sorrend változhat)

Összehasonlító táblázat:

Szempont List Set
Sorrend Megmarad Nem garantált (függ a megvalósítástól)
Duplikátumok Engedélyezett Nem engedélyezett
Hozzáférés index szerint Igen Nem
Interfész java.util.List java.util.Set
Tipikus használat Rendezett kollekciók, listák Egyedi kollekciók, halmazok