Sobes.tech
Junior

Czym różni się List od Set w Java?

sobes.tech AI

Odpowiedź od AI

Główne różnice:

  1. Kolejność elementów:
    • List zachowuje kolejność dodawania elementów.
    • Set nie gwarantuje kolejności elementów (zależy od konkretnej implementacji, np. LinkedHashSet zachowuje kolejność dodawania).
  2. Duplikaty:
    • List pozwala na przechowywanie duplikatów.
    • Set przechowuje tylko unikalne elementy.
  3. Dostęp do elementów:
    • List umożliwia dostęp do elementów po indeksie.
    • Set nie zapewnia bezpośredniego dostępu do elementów po indeksie, dostęp odbywa się przez iterator lub pętlę.
  4. Wydajność:
    • Operacje wyszukiwania i dodawania w List z dużą ilością elementów mogą być wolniejsze niż w Set (np. w HashSet).
    • Operacje dodawania i usuwania w Set (np. HashSet) zazwyczaj mają średnią złożoność czasową stałą.

Przykład:

// Lista pozwalająca na duplikaty i zachowująca kolejność
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Wyjście: [Apple, Banana, Apple]

// Zbiór przechowujący tylko unikalne elementy
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Wyjście: [Apple, Banana] (kolejność może się różnić)

Tabela porównawcza:

Aspekt List Set
Kolejność Zachowana Nie gwarantowana (zależy od implementacji)
Duplikaty Dozwolone Niedozwolone
Dostęp po indeksie Tak Nie
Interfejs java.util.List java.util.Set
Typowe zastosowania Kolekcje uporządkowane, listy Unikalne kolekcje, zbiory