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:
- Elemek sorrendje:
Listmegőrzi az elemek hozzáadásának sorrendjét.Setnem garantálja az elemek sorrendjét (attól függően, hogy milyen implementációt használunk, például aLinkedHashSetmegőrzi a beszúrás sorrendjét).
- Duplikátumok:
Listmegenged duplikált elemeket.Setcsak egyedi elemeket tartalmaz.
- Hozzáférés az elemekhez:
Listlehetővé teszi az elemek index szerinti elérését.Setnem 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.
- Teljesítmény:
- A
List-ben végzett keresési és hozzáadási műveletek sok elem esetén lassabbak lehetnek, mint aSet-ben (például aHashSetesetén). - A
Set-ben a hozzáadás és törlés műveletek (például aHashSet) általában átlagos állandó időkomplexitással rendelkeznek.
- A
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 |