Въведение в списъка срещу Set в C #

Списък и набор са две от многото структури на данни, поддържани от C #. Списък е абстрактна структура на данни, която е линейна. Състои се от елементи, подредени по линеен начин. Възможно е добавяне на елементи в списъка на различни позиции. Списъкът има свойство, наречено дължина (брой елементи в списъка). В тази тема ще научим за List vs Set.

Забележка : Внимавайте, тъй като списъците се различават от масивите. Списъкът има променлив размер, т.е. елементите могат да бъдат добавени в списъка, докато масивите имат фиксиран размер.

Set е абстрактна структура на данни. Комплектът има уникални елементи и редът на елементите не е важен. Елементите в набора не могат да бъдат достъпни чрез индекси. Самите елементи са индекси в набора и до определен елемент може да се достигне с помощта на foreach линия.

Сравнение между главата и списъка (Инфографика)

По-долу са топ 5 разликите между Списък срещу Set

Ключови разлики

Следват основните ключови мерки:

  1. Списъкът може да съдържа дублиращи се елементи, докато зададеният не може, тъй като набор може да има само уникални елементи. Затова използвайте set, ако искате уникални елементи.
  2. Елементите в списъка се подреждат, докато редът не е важен в набор, но зависи от изпълнението на набора.
  3. Достъпът до елементите се използва чрез индекси в списъка, докато самите елементи са индекси в набора. Следователно цикъла на foreach се използва за достъп до елементи от набора. Той обаче може да се използва и за достъп до елементи от списъка, както е показано в кода на списъка по-горе.

Нека разгледаме някои от методите на интерфейсите на списъка и набор.

списък

Следват някои от методите, реализирани от IList интерфейса:

  • int Add (element) - за добавяне на елемента към списъка (в края) и връщане на стойност, показваща успешно вмъкване.
  • void Insert (int, element) - за вмъкване на елемента на дадената позиция в списъка
  • void Clear () - за премахване на всички елементи от списъка
  • bool Съдържа (елемент) - за да провери дали елементът присъства в списъка
  • void Remove (елемент) - за да премахнете дадения елемент от списъка
  • void RemoveAt (int) - за премахване на елемента в дадената позиция
  • int IndexOf (елемент) - за връщане на позицията на елемента
  • това (int) - това е индексатор, който позволява достъп до елемента от дадената позиция

Следва един от примерен код за списъка:

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

изход:

Комплект

Следват някои от методите, реализирани от интерфейса ISet:

  • bool Add (елемент) - Връща true, ако елементът е добавен към множеството, при условие че не присъства в множеството else връща false
  • bool съдържа (елемент) - Връща true, ако елементът вече присъства в набора, в противен случай той връща false
  • bool Remove (елемент) - Връща вярно, ако елементът съществува в набора и може да бъде премахнат, иначе връща невярно
  • void Clear () - За да премахнете всички елементи от набора
  • void IntersectWith (Set other) - Той намира пресечната точка на 2 множества (онези елементи, които се срещат и в двата набора), набора, на който се извиква методът, и на другия набор, който се предава като параметър.
  • void UnionWith (Set other) - Той намира обединението на 2 множества (всички елементи и в двата набора), набора, на който се извиква методът, и на другия набор, който се предава като параметър.
  • bool IsSubsetOf (Set other) - Връща true, ако множеството (по който се нарича методът) е подмножество на другия набор, предаден като параметър, в противен случай връща false
  • bool IsSupersetOf (Set other) - Връща true, ако множеството (по който се нарича методът) е суперсет на другия набор, предаден като параметър, в противен случай връща false
  • int Count - Връща броя на елементите в набора

Следва един от примерен код за 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+" ");
)
)
)

изход:

Таблица за сравнение между списък срещу набор

Следващата таблица илюстрира разликата между списък и набор:

списъкКомплект
1. Може да съдържа дублиращи се елементи1. Елементите трябва да са уникални
2. Редът на елементите е важен2. Редът на елементите не е важен, но зависи от изпълнението
3. Достъп до елементите се използва индекс3. Самите елементи са индекси
4. Интерфейсът, използван за реализиране на списъка, е System.Collections.IList4. Интерфейсът, използван за внедряване на набор е System.Collections.ISet
5. Списъкът се реализира като статичен списък (използващ масив) и динамичен списък (свързан списък)5. Наборите се реализират като хешсет (хешбит) и сортиран комплект (базиран на червено-черно дърво)

Препоръчителни статии

Това е ръководство за Списък срещу Set. Тук сме обсъдили списъка срещу Задайте ключови разлики с инфографика и таблица за сравнение. Може да разгледате и следните статии, за да научите повече -

  1. C # Списък срещу масив
  2. C # масив срещу списък
  3. C # функции
  4. C # Команди