Sobes.tech
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 (γρήγορη αναζήτηση)