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)