Sobes.tech
Junior

Qual è la differenza tra List e Set in Dart?

sobes.tech AI

Risposta dell'AI

Differenze principali:

  • Contenuto: List può contenere duplicati, Set memorizza solo elementi unici.
  • Ordine: List mantiene l'ordine di inserimento, Set non garantisce un ordine.
  • Prestazioni:
    • Aggiunta/eliminazione: In media, l'operazione di aggiunta/eliminazione di un elemento in Set è più veloce (O(1)) grazie all'uso dell'hash. Per List, queste operazioni possono essere più lente (fino a O(n)) a seconda della posizione.
    • Ricerca: In Set, la ricerca di un elemento per valore è più veloce (O(1) in media) sempre grazie all'hash. In List, la ricerca per valore richiede una scansione (O(n)). L'accesso per indice in List è rapido (O(1)).

Esempi:

// List - permette duplicati, mantiene l'ordine
List<int> numbersList = [1, 2, 2, 3, 1];
print(numbersList); // Output: [1, 2, 2, 3, 1]
print(numbersList[0]); // Output: 1 (accesso per indice)

// Set - solo elementi unici, ordine non garantito
Set<int> numbersSet = {1, 2, 2, 3, 1};
print(numbersSet); // Output: {1, 2, 3} (l'ordine può variare)
// print(numbersSet[0]); // Errore: Set non supporta l'accesso per indice
print(numbersSet.contains(2)); // Output: true (ricerca rapida)