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:
- 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.
- Elementy na liście są uporządkowane, podczas gdy kolejność nie jest ważna w zestawie, ale zależy to od implementacji zestawu.
- 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:
Lista | Zestaw |
1. Może zawierać zduplikowane elementy | 1. Elementy muszą być unikalne |
2. Ważna jest kolejność elementów | 2. Kolejność elementów nie jest ważna, ale zależy od implementacji |
3. Dostęp do elementów można uzyskać za pomocą indeksu | 3. Same elementy są wskaźnikami |
4. Interfejs używany do implementacji listy to System.Collections.IList | 4. 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 -
- Lista C # vs macierz
- C # Array vs List
- Funkcje C #
- Komendy C #