Junior
Ποια είναι η διαφορά μεταξύ List και Set στο Dart;
sobes.tech AI
Απάντηση από AI
Βασικές διαφορές:
- Περιεχόμενο: Η λίστα μπορεί να περιέχει διπλότυπα, το Set αποθηκεύει μόνο μοναδικά στοιχεία.
- Σειρά: Η λίστα διατηρεί τη σειρά προσθήκης, το Set δεν εγγυάται σειρά.
- Απόδοση:
- Προσθήκη/διαγραφή: Μέσος όρος, η λειτουργία προσθήκης/διαγραφής σε Set είναι πιο γρήγορη (O(1)) χάρη στη χρήση hashing. Για λίστες, αυτές οι λειτουργίες μπορεί να είναι πιο αργές (έως O(n)) ανάλογα με τη θέση.
- Αναζήτηση: Σε Set, η αναζήτηση στοιχείου ανά τιμή είναι πιο γρήγορη (O(1) μέσος όρος) λόγω hashing. Σε λίστα, η αναζήτηση απαιτεί σάρωση (O(n)). Η πρόσβαση με δείκτη σε λίστα είναι γρήγορη (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 (γρήγορη αναζήτηση)