Introdução à lista versus conjunto em c #

List e Set são duas das muitas estruturas de dados suportadas pelo C #. List é uma estrutura de dados abstrata que é linear. É composto por elementos dispostos de maneira linear. É possível adicionar elementos à lista em diferentes posições. A lista possui uma propriedade chamada length (número de elementos na lista). Neste tópico, vamos aprender sobre Lista x Conjunto.

Nota : Tenha cuidado, pois as listas são diferentes das matrizes. As listas têm tamanho variável, ou seja, elementos podem ser anexados à lista enquanto matrizes têm tamanho fixo.

Conjunto é uma estrutura de dados abstrata. O conjunto possui elementos exclusivos e a ordem dos elementos não é importante. Os elementos do conjunto não podem ser acessados ​​por meio de índices. Os próprios elementos são índices no conjunto e um elemento específico pode ser acessado usando um loop foreach.

Comparação cara a cara entre lista x conjunto (infográficos)

Abaixo estão as 5 principais diferenças entre Lista x Conjunto

Principais diferenças

A seguir estão os principais tópicos:

  1. A lista pode conter elementos duplicados enquanto o conjunto não pode. Como um conjunto pode ter apenas elementos exclusivos. Portanto, use set se desejar elementos únicos.
  2. Os elementos na lista são ordenados enquanto o pedido não é importante em um conjunto, mas depende da implementação do conjunto.
  3. Os elementos são acessados ​​usando índices na lista, enquanto os próprios elementos são índices no conjunto. Portanto, o loop foreach é usado para acessar os elementos do conjunto. No entanto, também pode ser usado para acessar elementos da lista, conforme mostrado no código da lista acima.

Vejamos alguns dos métodos das interfaces da lista e do conjunto.

Lista

A seguir, estão alguns dos métodos implementados pela interface IList:

  • int Add (elemento) - para anexar o elemento à lista (no final) e retornar um valor indicando a inserção bem-sucedida.
  • Inserir void (int, elemento) - para inserir o elemento na posição especificada na lista
  • Limpar () - para remover todos os elementos da lista
  • bool Contém (elemento) - para verificar se o elemento está presente na lista
  • void Remove (elemento) - para remover o elemento especificado da lista
  • void RemoveAt (int) - para remover o elemento na posição especificada
  • int IndexOf (elemento) - para retornar a posição do elemento
  • this (int) - é um indexador que permite o acesso ao elemento na posição especificada

A seguir, é apresentado um dos códigos de exemplo da 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+" ");
)
)
)

Resultado:

Conjunto

A seguir, estão alguns dos métodos implementados pela interface ISet:

  • bool Add (elemento) - Retorna true se o elemento for adicionado ao conjunto, desde que não esteja presente no conjunto, retornará false
  • bool Contém (elemento) - Retorna verdadeiro se o elemento já estiver presente no conjunto, senão retorna falso
  • bool Remove (elemento) - Retorna true se o elemento existe no conjunto e pode ser removido, caso contrário, retorna false
  • Limpar () - Para remover todos os elementos do conjunto
  • void IntersectWith (Conjunto outro) - Encontra a interseção de 2 conjuntos (os elementos que ocorrem nos dois conjuntos), o conjunto no qual o método é chamado e o outro conjunto que é passado como parâmetro.
  • void UnionWith (Conjunto outro) - Encontra a união de 2 conjuntos (todos os elementos nos dois conjuntos), o conjunto no qual o método é chamado e o outro conjunto que é passado como parâmetro.
  • bool IsSubsetOf (Set other) - Retorna true se o conjunto (no qual o método é chamado) for um subconjunto do outro conjunto passado como parâmetro, caso contrário, retornará false
  • bool IsSupersetOf (Set other) - Retorna true se o conjunto (no qual o método é chamado) for um superconjunto do outro conjunto passado como parâmetro, caso contrário, retornará false
  • int Count - Retorna o número de elementos no conjunto

A seguir, é apresentado um dos códigos de exemplo para o conjunto:

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

Resultado:

Tabela de comparação entre Lista x Conjunto

A tabela a seguir ilustra a diferença entre lista e conjunto:

ListaConjunto
1. Pode conter elementos duplicados1. Os elementos devem ser únicos
2. A ordem dos elementos é importante2. A ordem dos elementos não é importante, mas depende da implementação
3. Os elementos são acessados ​​usando o índice3. Os próprios elementos são índices
4. A interface usada para implementar a lista é System.Collections.IList4. A interface usada para implementar o conjunto é System.Collections.ISet
5. A lista é implementada como uma lista estática (usando matriz) e lista dinâmica (lista vinculada)5. Os conjuntos são implementados como hashset (hashtable) e conjunto classificado (baseado em árvore vermelho-preto)

Artigos recomendados

Este é um guia para Listar vs Definir. Aqui discutimos as principais diferenças de lista versus conjunto com infográficos e tabela de comparação. Você também pode consultar os seguintes artigos para saber mais -

  1. Matriz vs Lista C #
  2. Matriz C # vs Lista
  3. Funções C #
  4. Comandos C #