Úvod do seznamu vs sada v C #

Seznam a sada jsou dvě z mnoha datových struktur podporovaných C #. Seznam je abstraktní datová struktura, která je lineární. Skládá se z prvků uspořádaných lineárně. Je možné přidat prvky do seznamu na různých pozicích. Seznam má vlastnost nazvanou délka (počet prvků v seznamu). V tomto tématu se chystáme dozvědět o seznamu vs set.

Poznámka : Buďte opatrní, protože seznamy se liší od polí. Seznamy mají proměnnou velikost, tj. Prvky lze do seznamu přidat, zatímco pole mají pevnou velikost.

Sada je abstraktní datová struktura. Sada má jedinečné prvky a pořadí prvků není důležité. K prvkům v sadě nelze přistupovat prostřednictvím indexů. Prvky samotné jsou indexy v sadě a ke konkrétnímu prvku lze přistupovat pomocí smyčky foreach.

Porovnání mezi hlavami mezi seznamem a sadou (infografika)

Níže je pět největších rozdílů mezi seznamem a sadou

Klíčové rozdíly

Klíčové cesty s sebou jsou:

  1. Seznam může obsahovat duplicitní prvky, zatímco sada nemůže, protože sada může mít pouze jedinečné prvky. Takže pokud chcete jedinečné prvky, použijte sadu.
  2. Prvky v seznamu jsou uspořádány, zatímco pořadí není důležité v sadě, ale záleží na implementaci sady.
  3. K prvkům se přistupuje pomocí indexů v seznamu, zatímco samotné prvky jsou indexy v sadě. Proto smyčka foreach se používá pro přístup k prvkům sady. Lze jej však také použít pro přístup k prvkům seznamu, jak je uvedeno v kódu výše uvedeného seznamu.

Podívejme se na některé metody rozhraní seznamu a sady.

Seznam

Následuje několik metod implementovaných rozhraním IList:

  • int Add (element) - přidání prvku do seznamu (na konci) a vrácení hodnoty označující úspěšné vložení.
  • void Insert (int, element) - vložení prvku na danou pozici v seznamu
  • void Clear () - odstranění všech prvků ze seznamu
  • bool Obsahuje (prvek) - zkontroluje, zda je prvek v seznamu
  • void Remove (element) - odebrání daného prvku ze seznamu
  • void RemoveAt (int) - pro odstranění prvku v dané poloze
  • int IndexOf (element) - pro vrácení pozice prvku
  • this (int) - je to indexátor, který umožňuje přístup k prvku na dané pozici

Následuje jeden z příkladů seznamu:

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

Výstup:

Soubor

Následuje několik metod implementovaných rozhraním ISet:

  • bool Add (element) - Vrací true, pokud je prvek přidán do sady za předpokladu, že není v sadě přítomen, jinak vrací false
  • bool Obsahuje (prvek) - Vrací true, pokud je prvek již v sadě, jinak vrací false
  • bool Remove (element) - Vrací true, pokud prvek existuje v sadě a lze jej odstranit, vrací false
  • void Clear () - Odstranění všech prvků ze sady
  • void IntersectWith (Set other) - Najde průnik 2 sad (ty prvky, které se vyskytují v obou sadách), množinu, na kterou je metoda volána, a druhou množinu, která je předávána jako parametr.
  • void UnionWith (Set other) - Zjistí spojení 2 sad (všech prvků v obou sadách), sady, na kterou je metoda volána, a druhé sady, která je předávána jako parametr.
  • bool IsSubsetOf (Set other) - Vrací true, pokud je sada (na které je metoda volána) podmnožinou jiné sady předávané jako parametr, jinak vrací false
  • bool IsSupersetOf (Set other) - Vrací true, pokud je sada (na které je metoda volána) nadmnožinou jiné sady předávané jako parametr, jinak vrací false
  • int Count - Vrací počet prvků v sadě

Následuje jeden z příkladů sady:

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

Výstup:

Srovnávací tabulka mezi seznamem a sadou

Následující tabulka ukazuje rozdíl mezi seznamem a sadou:

SeznamSoubor
1. Může obsahovat duplicitní prvky1. Prvky musí být jedinečné
2. Pořadí prvků je důležité2. Pořadí prvků není důležité, ale záleží na implementaci
3. K prvkům se přistupuje pomocí indexu3. Prvky samy o sobě jsou indexy
4. Rozhraní použité k implementaci seznamu je System.Collections.IList4. Rozhraní použité k implementaci sady je System.Collections.ISet
5. Seznam je implementován jako statický seznam (pomocí pole) a dynamický seznam (propojený seznam)5. Sady jsou implementovány jako hashset (hashtable) a setříděné sady (na základě červeno-černého stromu)

Doporučené články

Toto je průvodce seznamem vs set. Zde jsme probrali seznam klíčových rozdílů s infografikou a srovnávací tabulkou. Další informace naleznete také v následujících článcích -

  1. C # Seznam vs Array
  2. C # Array vs List
  3. C # Funkce
  4. C # Příkazy

Kategorie: