Lista vs conjunto - Las 5 principales diferencias y comparaciones que debe aprender

Tabla de contenido:

Anonim

Introducción a List vs Set en C #

List y Set son dos de las muchas estructuras de datos compatibles con C #. La lista es una estructura de datos abstracta que es lineal. Se compone de elementos dispuestos de forma lineal. Es posible agregar elementos a la lista en diferentes posiciones. La lista tiene una propiedad llamada longitud (número de elementos en la lista). En este tema, vamos a aprender sobre List vs Set.

Nota : Tenga cuidado ya que las listas son diferentes de las matrices. Las listas tienen un tamaño variable, es decir, los elementos se pueden agregar en la lista mientras que las matrices tienen un tamaño fijo.

Set es una estructura de datos abstracta. El conjunto tiene elementos únicos y el orden de los elementos no es importante. No se puede acceder a los elementos del conjunto a través de índices. Los elementos en sí mismos son índices en el conjunto y se puede acceder a un elemento particular usando un bucle foreach.

Comparación cara a cara entre la lista y el conjunto (infografía)

A continuación se muestran las 5 diferencias principales entre List vs Set

Diferencias clave

Los siguientes son los puntos clave:

  1. La lista puede contener elementos duplicados mientras que el conjunto no puede, ya que un conjunto solo puede tener elementos únicos. Así que usa set si quieres elementos únicos.
  2. Los elementos de la lista se ordenan mientras que el orden no es importante en un conjunto, pero depende de la implementación del conjunto.
  3. Se accede a los elementos utilizando índices en la lista, mientras que los elementos mismos son índices en el conjunto. Por lo tanto, foreach loop se utiliza para acceder a elementos del conjunto. Sin embargo, también se puede usar para acceder a elementos de la lista como se muestra en el código de la lista anterior.

Veamos algunos de los métodos de las interfaces de la lista y el conjunto.

Lista

Los siguientes son algunos de los métodos implementados por la interfaz IList:

  • int Agregar (elemento): para agregar el elemento a la lista (al final) y devolver un valor que indica una inserción exitosa.
  • Insertar vacío (int, elemento) - para insertar el elemento en la posición dada en la lista
  • void Clear () - para eliminar todos los elementos de la lista
  • bool Contains (element): para verificar si el elemento está presente en la lista
  • void Remove (element) - para eliminar el elemento dado de la lista
  • void RemoveAt (int) - para eliminar el elemento en la posición dada
  • int IndexOf (element) - para devolver la posición del elemento
  • this (int): es un indexador que permite el acceso al elemento en la posición dada

El siguiente es uno de los códigos de ejemplo para la lista:

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

Salida:

Conjunto

Los siguientes son algunos de los métodos implementados por la interfaz ISet:

  • bool Add (element): devuelve verdadero si el elemento se agrega al conjunto siempre que no esté presente en el conjunto; de lo contrario, devuelve falso
  • bool Contains (element): devuelve verdadero si el elemento ya está presente en el conjunto; de lo contrario, devuelve falso
  • bool Remove (element): devuelve verdadero si el elemento existe en el conjunto y se puede eliminar; de lo contrario, devuelve falso
  • void Clear () - Para eliminar todos los elementos del conjunto
  • void IntersectWith (Set other): encuentra la intersección de 2 conjuntos (aquellos elementos que ocurren en ambos conjuntos), el conjunto en el que se llama el método y el otro conjunto que se pasa como parámetro.
  • void UnionWith (Set other): encuentra la unión de 2 conjuntos (todos los elementos en ambos conjuntos), el conjunto en el que se llama al método y el otro conjunto que se pasa como parámetro.
  • bool IsSubsetOf (Establecer otro): devuelve verdadero si el conjunto (en el que se llama al método) es un subconjunto del otro conjunto pasado como parámetro; de lo contrario, devuelve falso
  • bool IsSupersetOf (Establecer otro): devuelve verdadero si el conjunto (en el que se llama al método) es un superconjunto del otro conjunto pasado como parámetro; de lo contrario, devuelve falso
  • int Count - Devuelve el número de elementos en el conjunto

El siguiente es uno de los códigos de ejemplo para 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+" ");
)
)
)

Salida:

Tabla de comparación entre Lista vs Conjunto

La siguiente tabla ilustra la diferencia entre lista y conjunto:

ListaConjunto
1. Puede contener elementos duplicados1. Los elementos deben ser únicos
2. El orden de los elementos es importante.2. El orden de los elementos no es importante, pero depende de la implementación.
3. Se accede a los elementos usando el índice3. Los elementos mismos son índices.
4. La interfaz utilizada para implementar la lista es System.Collections.IList4. La interfaz utilizada para implementar el conjunto es System.Collections.ISet
5. La lista se implementa como una lista estática (usando una matriz) y una lista dinámica (lista vinculada)5. Los conjuntos se implementan como hashset (tabla hash) y conjunto ordenado (basado en árbol rojo-negro)

Artículos recomendados

Esta es una guía para List vs Set. Aquí hemos discutido las diferencias clave de List vs Set con infografías y tabla de comparación. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. C # List vs Array
  2. C # Array vs List
  3. Funciones de C #
  4. Comandos C #