Introduction à List vs Set en C #

List et Set sont deux des nombreuses structures de données prises en charge par C #. La liste est une structure de données abstraite linéaire. Il comprend des éléments disposés de manière linéaire. Il est possible d'ajouter des éléments à la liste à différentes positions. La liste a une propriété appelée longueur (nombre d'éléments dans la liste). Dans cette rubrique, nous allons en savoir plus sur List vs Set.

Remarque : soyez prudent car les listes sont différentes des tableaux. Les listes ont une taille variable, c'est-à-dire que les éléments peuvent être ajoutés à la liste tandis que les tableaux ont une taille fixe.

L'ensemble est une structure de données abstraite. L'ensemble a des éléments uniques et l'ordre des éléments n'est pas important. Les éléments de l'ensemble ne sont pas accessibles via les index. Les éléments eux-mêmes sont des indices dans l'ensemble et un élément particulier est accessible à l'aide d'une boucle foreach.

Comparaison directe entre liste et ensemble (infographie)

Voici les 5 principales différences entre la liste et l'ensemble

Différences clés

Voici les principaux points à retenir:

  1. La liste peut contenir des éléments en double alors que l'ensemble ne le peut pas, car un ensemble ne peut avoir que des éléments uniques. Utilisez donc set si vous voulez des éléments uniques.
  2. Les éléments de la liste sont ordonnés alors que l'ordre n'est pas important dans un ensemble mais cela dépend de l'implémentation de l'ensemble.
  3. Les éléments sont accessibles en utilisant des indices dans la liste tandis que les éléments eux-mêmes sont des indices dans l'ensemble. La boucle foreach est donc utilisée pour accéder aux éléments de l'ensemble. Cependant, il peut également être utilisé pour accéder aux éléments de la liste comme indiqué dans le code de la liste ci-dessus.

Voyons quelques-unes des méthodes des interfaces de la liste et de l'ensemble.

liste

Voici quelques-unes des méthodes implémentées par l'interface IList:

  • int Add (élément) - pour ajouter l'élément à la liste (à la fin) et pour renvoyer une valeur indiquant une insertion réussie.
  • void Insert (int, element) - pour insérer l'élément à la position donnée dans la liste
  • void Clear () - pour supprimer tous les éléments de la liste
  • bool Contains (element) - pour vérifier si l'élément est présent dans la liste
  • void Remove (element) - pour supprimer l'élément donné de la liste
  • void RemoveAt (int) - pour supprimer l'élément à la position donnée
  • int IndexOf (element) - pour retourner la position de l'élément
  • this (int) - c'est un indexeur qui permet d'accéder à l'élément sur la position donnée

Voici un exemple de code pour la liste:

// 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+" ");
)
)
)

Production:

Ensemble

Voici quelques-unes des méthodes implémentées par l'interface ISet:

  • bool Add (element) - Retourne vrai si l'élément est ajouté à l'ensemble à condition qu'il ne soit pas présent dans l'ensemble sinon renvoie faux
  • bool Contains (element) - Retourne vrai si l'élément est déjà présent dans l'ensemble, sinon il retourne faux
  • bool Remove (element) - Retourne vrai si l'élément existe dans l'ensemble et peut être supprimé sinon retourne faux
  • void Clear () - Pour supprimer tous les éléments de l'ensemble
  • void IntersectWith (Set other) - Il trouve l'intersection de 2 ensembles (les éléments qui se produisent dans les deux ensembles), l'ensemble sur lequel la méthode est appelée et l'autre ensemble qui est passé en paramètre.
  • void UnionWith (Set other) - Il trouve l'union de 2 ensembles (tous les éléments dans les deux ensembles), l'ensemble sur lequel la méthode est appelée et l'autre ensemble qui est passé en paramètre.
  • bool IsSubsetOf (Set other) - Retourne true si l'ensemble (sur lequel la méthode est appelée) est un sous-ensemble de l'autre ensemble passé en paramètre, sinon renvoie false
  • bool IsSupersetOf (Set other) - Renvoie true si l'ensemble (sur lequel la méthode est appelée) est un sur-ensemble de l'autre ensemble passé en paramètre, sinon renvoie false
  • int Count - Renvoie le nombre d'éléments dans l'ensemble

Voici un exemple de code pour 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+" ");
)
)
)

Production:

Tableau de comparaison entre la liste et l'ensemble

Le tableau suivant illustre la différence entre la liste et l'ensemble:

listeEnsemble
1. Peut contenir des éléments en double1. Les éléments doivent être uniques
2. L'ordre des éléments est important2. L'ordre des éléments n'est pas important, mais cela dépend de la mise en œuvre
3. Les éléments sont accessibles à l'aide de l'index3. Les éléments eux-mêmes sont des indices
4. L'interface utilisée pour implémenter la liste est System.Collections.IList4. L'interface utilisée pour implémenter set est System.Collections.ISet
5. La liste est implémentée comme une liste statique (à l'aide d'un tableau) et une liste dynamique (liste liée)5. Les ensembles sont implémentés en tant que hashset (table de hachage) et ensemble trié (basé sur un arbre rouge-noir)

Articles recommandés

Ceci est un guide pour List vs Set. Ici, nous avons discuté des différences clés List vs Set avec des infographies et un tableau de comparaison. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Liste C # vs tableau
  2. Tableau C # vs liste
  3. Fonctions C #
  4. Commandes C #