Wprowadzenie do listy vs zestaw w C #

Lista i zestaw to dwie z wielu struktur danych obsługiwanych przez C #. Lista jest abstrakcyjną strukturą danych, która jest liniowa. Składa się z elementów ułożonych liniowo. Możliwe jest dodawanie elementów do listy w różnych pozycjach. Lista ma właściwość o nazwie długość (liczba elementów na liście). W tym temacie dowiemy się o zestawieniu vs. zestawie.

Uwaga : Uważaj, ponieważ listy różnią się od tablic. Listy mają zmienny rozmiar, tzn. Elementy mogą być dołączane do listy, a tablice mają ustalony rozmiar.

Zestaw jest abstrakcyjną strukturą danych. Zestaw ma unikalne elementy, a kolejność elementów nie jest ważna. Do elementów zestawu nie można uzyskać dostępu za pomocą indeksów. Same elementy są wskaźnikami w zestawie, a do konkretnego elementu można uzyskać dostęp za pomocą pętli foreach.

Bezpośrednie porównanie listy z zestawem (infografiki)

Poniżej znajduje się 5 najważniejszych różnic między listą a zestawem

Kluczowe różnice

Oto najważniejsze dania na wynos:

  1. Lista może zawierać zduplikowane elementy, podczas gdy zestaw nie może, ponieważ zestaw może zawierać tylko unikalne elementy. Więc użyj set, jeśli chcesz unikalnych elementów.
  2. Elementy na liście są uporządkowane, podczas gdy kolejność nie jest ważna w zestawie, ale zależy to od implementacji zestawu.
  3. Dostęp do elementów można uzyskać za pomocą indeksów na liście, natomiast same elementy są indeksami w zestawie. Dlatego pętla foreach służy do uzyskiwania dostępu do elementów zestawu. Można go jednak również użyć do uzyskania dostępu do elementów listy, jak pokazano w kodzie powyższej listy.

Przyjrzyjmy się niektórym metodom interfejsów listy i zestawu.

Lista

Oto niektóre z metod implementowanych przez interfejs IList:

  • int Add (element) - aby dołączyć element do listy (na końcu) i zwrócić wartość wskazującą na pomyślne wstawienie.
  • void Insert (int, element) - aby wstawić element w danym miejscu na liście
  • void Clear () - aby usunąć wszystkie elementy z listy
  • bool Zawiera (element) - aby sprawdzić, czy element jest obecny na liście
  • void Remove (element) - aby usunąć dany element z listy
  • void RemoveAt (int) - aby usunąć element w danej pozycji
  • int IndexOf (element) - aby zwrócić pozycję elementu
  • this (int) - jest to indeksator, który umożliwia dostęp do elementu na danej pozycji

Poniżej znajduje się przykładowy kod listy:

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

Wynik:

Zestaw

Oto niektóre z metod implementowanych przez interfejs ISet:

  • bool Add (element) - Zwraca true, jeśli element jest dodawany do zestawu, pod warunkiem że nie występuje w zestawie, w przeciwnym razie zwraca false
  • bool Contains (element) - Zwraca true, jeśli element jest już obecny w zestawie, w przeciwnym razie zwraca false
  • bool Remove (element) - Zwraca wartość true, jeśli element istnieje w zestawie i można go usunąć, w przeciwnym razie zwraca wartość false
  • void Clear () - Aby usunąć wszystkie elementy z zestawu
  • void IntersectWith (Set other) - Znajduje przecięcie 2 zestawów (tych elementów, które występują w obu zestawach), zestawu, na którym wywoływana jest metoda, i drugiego zestawu, który jest przekazywany jako parametr.
  • void UnionWith (Set other) - Znajduje połączenie 2 zestawów (wszystkich elementów w obu zestawach), zestawu, na którym wywoływana jest metoda, i drugiego zestawu, który jest przekazywany jako parametr.
  • bool IsSubsetOf (Set other) - Zwraca true, jeśli zestaw (w którym wywoływana jest metoda) jest podzbiorem drugiego zestawu przekazywanego jako parametr, w przeciwnym razie zwraca false
  • bool IsSupersetOf (Set other) - Zwraca true, jeśli zestaw (w którym wywoływana jest metoda) jest nadzbiorem drugiego zestawu przekazanego jako parametr, w przeciwnym razie zwraca false
  • int Count - Zwraca liczbę elementów w zestawie

Poniżej znajduje się przykładowy kod zestawu:

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

Wynik:

Tabela porównawcza pomiędzy listą a zestawem

Poniższa tabela ilustruje różnicę między listą a zestawem:

ListaZestaw
1. Może zawierać zduplikowane elementy1. Elementy muszą być unikalne
2. Ważna jest kolejność elementów2. Kolejność elementów nie jest ważna, ale zależy od implementacji
3. Dostęp do elementów można uzyskać za pomocą indeksu3. Same elementy są wskaźnikami
4. Interfejs używany do implementacji listy to System.Collections.IList4. Interfejs używany do implementacji zestawu to System.Collections.ISet
5. Lista jest implementowana jako lista statyczna (przy użyciu tablicy) i lista dynamiczna (lista połączona)5. Zestawy są implementowane jako zestaw skrótów (zestaw skrótów) i zestaw posortowany (oparty na drzewach czerwono-czarnych)

Polecane artykuły

To jest przewodnik po liście vs zestawie. Omówiliśmy kluczowe różnice między zestawem a zestawem z infografiką i tabelą porównawczą. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Lista C # vs macierz
  2. C # Array vs List
  3. Funkcje C #
  4. Komendy C #