Introduzione a List vs Set in C #

Elenco e set sono due delle molte strutture di dati supportate da C #. L'elenco è una struttura di dati astratta che è lineare. Comprende elementi disposti in modo lineare. È possibile aggiungere elementi all'elenco in posizioni diverse. L'elenco ha una proprietà chiamata length (numero di elementi nell'elenco). In questo argomento, impareremo a conoscere List vs Set.

Nota : fare attenzione poiché gli elenchi sono diversi dagli array. Gli elenchi hanno dimensioni variabili, ovvero gli elementi possono essere aggiunti all'elenco mentre gli array hanno dimensioni fisse.

Set è una struttura di dati astratta. Il set ha elementi unici e l'ordine degli elementi non è importante. Agli elementi dell'insieme non è possibile accedere tramite indici. Gli elementi stessi sono indici nell'insieme e un particolare elemento è accessibile tramite un ciclo foreach.

Confronto testa a testa tra elenco vs set (infografica)

Di seguito sono elencate le 5 principali differenze tra Elenco e Set

Differenze chiave

Di seguito sono riportati i punti chiave da asporto:

  1. L'elenco può contenere elementi duplicati mentre set non può, poiché un set può contenere solo elementi univoci. Quindi usa set se vuoi elementi unici.
  2. Gli elementi nell'elenco vengono ordinati mentre l'ordine non è importante in un set ma dipende dall'implementazione del set.
  3. È possibile accedere agli elementi utilizzando gli indici nell'elenco mentre gli elementi stessi sono indici nell'insieme. Quindi il ciclo foreach viene utilizzato per accedere agli elementi dell'insieme. Tuttavia, può anche essere utilizzato per accedere agli elementi dell'elenco come mostrato nel codice dell'elenco sopra.

Esaminiamo alcuni dei metodi delle interfacce dell'elenco e del set.

Elenco

Di seguito sono riportati alcuni dei metodi implementati dall'interfaccia IList:

  • int Aggiungi (elemento) - per aggiungere l'elemento all'elenco (alla fine) e per restituire un valore che indica l'inserimento riuscito.
  • void Insert (int, element) - per inserire l'elemento nella posizione data nell'elenco
  • void Clear () - per rimuovere tutti gli elementi dall'elenco
  • bool Contiene (elemento) - per verificare se l'elemento è presente nell'elenco
  • void Remove (element) - per rimuovere l'elemento specificato dall'elenco
  • void RemoveAt (int) - per rimuovere l'elemento in una determinata posizione
  • int IndexOf (element) - per restituire la posizione dell'elemento
  • questo (int) - è un indicizzatore che consente l'accesso all'elemento in una determinata posizione

Di seguito è riportato uno dei codici di esempio per l'elenco:

// C# Program to remove the element at // the specified index of the List using System; using System.Collections.Generic;
class StaticList (
// Main Method public static void Main(String() args)
(
// Creating an List of Integers
List firstlist = new List();
// Adding elements to List firstlist.Add(17); firstlist.Add(19); firstlist.Add(21); firstlist.Add(9); firstlist.Add(75); firstlist.Add(19); firstlist.Add(73);
Console.WriteLine("Elements Present in the List:");
// Displaying the elements of List for(int k=0;k (
Console.Write(firstlist(k)+" ");
)
Console.WriteLine(" ");
// removing the element at index 3
Console.WriteLine("Removing the element at index 3");
// 9 will be removed from the List // and 75 will come at index 3 firstlist.RemoveAt(3);
// Displaying the elements of List foreach(int k in firstlist)
(
Console.Write(k+" ");
)
)
)
// C# Program to remove the element at // the specified index of the List using System; using System.Collections.Generic;
class StaticList (
// Main Method public static void Main(String() args)
(
// Creating an List of Integers
List firstlist = new List();
// Adding elements to List firstlist.Add(17); firstlist.Add(19); firstlist.Add(21); firstlist.Add(9); firstlist.Add(75); firstlist.Add(19); firstlist.Add(73);
Console.WriteLine("Elements Present in the List:");
// Displaying the elements of List for(int k=0;k (
Console.Write(firstlist(k)+" ");
)
Console.WriteLine(" ");
// removing the element at index 3
Console.WriteLine("Removing the element at index 3");
// 9 will be removed from the List // and 75 will come at index 3 firstlist.RemoveAt(3);
// Displaying the elements of List foreach(int k in firstlist)
(
Console.Write(k+" ");
)
)
)

Produzione:

Impostato

Di seguito sono riportati alcuni dei metodi implementati dall'interfaccia ISet:

  • bool Aggiungi (elemento) - Restituisce vero se l'elemento viene aggiunto all'insieme purché non sia presente nell'insieme altrimenti restituisce falso
  • bool Contains (element) - Restituisce true se l'elemento è già presente nel set, altrimenti restituisce false
  • bool Rimuovi (elemento) - Restituisce vero se l'elemento esiste nell'insieme e può essere rimosso altrimenti restituisce falso
  • void Clear () - Per rimuovere tutti gli elementi dal set
  • void IntersectWith (Imposta altro): trova l'intersezione di 2 insiemi (quegli elementi presenti in entrambi gli insiemi), l'insieme su cui viene chiamato il metodo e l'altro insieme che viene passato come parametro.
  • void UnionWith (Set other) - Trova l'unione di 2 set (tutti gli elementi in entrambi i set), il set su cui viene chiamato il metodo e l'altro set che viene passato come parametro.
  • bool IsSubsetOf (Set other) - Restituisce true se il set (su cui viene chiamato il metodo) è un sottoinsieme dell'altro set passato come parametro, altrimenti restituisce false
  • bool IsSupersetOf (Set other) - Restituisce true se il set (su cui viene chiamato il metodo) è un superset dell'altro set passato come parametro, altrimenti restituisce false
  • int Count - Restituisce il numero di elementi nel set

Di seguito è riportato uno dei codici di esempio per set:

using System;
using System.Collections.Generic;
class HS (
// Driver code
public static void Main()
(
// Creating a HashSet of odd numbers
HashSet odd = new HashSet();
// Inserting elements in HashSet for (int i = 0; i < 5; i++) ( odd.Add(2 * i + 1);
)
Console.WriteLine("Elements in the HashSet:"); // Displaying the elements in the HashSet
foreach(int i in odd)
(
Console.Write(i+" ");
)
Console.WriteLine("\nTotal elements in the HashSet = "+odd.Count);
Console.WriteLine("Is it possible to remove 7? : "+odd.Remove(7));
Console.WriteLine("New HashSet = ");
foreach(int i in odd)
(
Console.Write(i+" ");
)
)
)

Produzione:

Tabella comparativa tra Elenco vs Set

La tabella seguente illustra la differenza tra elenco e set:

ElencoImpostato
1. Può contenere elementi duplicati1. Gli elementi devono essere unici
2. L'ordine degli elementi è importante2. L'ordine degli elementi non è importante, ma dipende dall'attuazione
3. Gli elementi sono accessibili tramite indice3. Gli elementi stessi sono indici
4. L'interfaccia utilizzata per implementare l'elenco è System.Collections.IList4. L'interfaccia utilizzata per implementare set è System.Collections.ISet
5. L'elenco è implementato come un elenco statico (usando l'array) e un elenco dinamico (elenco collegato)5. I set sono implementati come hashset (hashtable) e set ordinati (basati su albero rosso-nero)

Articoli consigliati

Questa è una guida per List vs Set. Qui abbiamo discusso dell'elenco rispetto alle differenze chiave impostate con infografica e tabella comparativa. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -

  1. Elenco C # vs array
  2. Matrice C # vs elenco
  3. Funzioni C #
  4. Comandi C #

Categoria: