Junior
Каква е разликата между List и Set в Dart?
sobes.tech AI
Отговор от AI
Основни разлики:
- Съдържание: List може да съдържа дублиращи се елементи, Set съхранява само уникални елементи.
- Ред: List запазва реда на добавяне, Set не гарантира ред.
- Производителност:
- Добавяне/премахване: Средно, операцията за добавяне/премахване в Set е по-бърза (O(1)) благодарение на хеширането. За List тези операции могат да бъдат по-бавни (до O(n)), в зависимост от позицията.
- Търсене: В Set, търсенето по стойност е по-бързо (O(1) средно), също заради хеширането. В List, търсенето по стойност изисква обхождане (O(n)). Достъпът до елемент по индекс в List е бърз (O(1)).
Примери:
// List - позволява дублиране, запазва реда
List<int> numbersList = [1, 2, 2, 3, 1];
print(numbersList); // Ще изведе: [1, 2, 2, 3, 1]
print(numbersList[0]); // Ще изведе: 1 (достъп по индекс)
// Set - само уникални елементи, редът не е гарантиран
Set<int> numbersSet = {1, 2, 2, 3, 1};
print(numbersSet); // Ще изведе: {1, 2, 3} (редът може да варира)
// print(numbersSet[0]); // Грешка: Set не поддържа достъп по индекс
print(numbersSet.contains(2)); // Ще изведе: true (бързо търсене)