Sobes.tech
Junior

Na czym polega różnica między List a Set w Dart?

sobes.tech AI

Odpowiedź od AI

Główne różnice:

  • Zawartość: List może zawierać duplikaty, Set przechowuje tylko unikalne elementy.
  • Kolejność: List zachowuje kolejność dodawania elementów, Set nie gwarantuje kolejności.
  • Wydajność:
    • Dodawanie/usuwanie: Średnio operacja dodawania/usuwania elementu w Set jest szybsza (O(1)) dzięki użyciu haszowania. Dla List te operacje mogą być wolniejsze (do O(n)) w zależności od pozycji.
    • Wyszukiwanie: W Set wyszukiwanie elementu po wartości jest szybsze (O(1) średnio) również dzięki haszowaniu. W List wyszukiwanie po wartości wymaga przeszukania (O(n)). Dostęp do elementu po indeksie w List jest szybki (O(1)).

Przykłady:

// List - pozwala na duplikaty, zachowuje kolejność
List<int> numbersList = [1, 2, 2, 3, 1];
print(numbersList); // Wyświetli: [1, 2, 2, 3, 1]
print(numbersList[0]); // Wyświetli: 1 (dostęp po indeksie)

// Set - tylko unikalne elementy, kolejność nie jest gwarantowana
Set<int> numbersSet = {1, 2, 2, 3, 1};
print(numbersSet); // Wyświetli: {1, 2, 3} (kolejność może się różnić)
// print(numbersSet[0]); // Błąd: Set nie obsługuje dostępu po indeksie
print(numbersSet.contains(2)); // Wyświetli: true (szybkie wyszukiwanie)