Въведение в списъка срещу Set в C #
Списък и набор са две от многото структури на данни, поддържани от C #. Списък е абстрактна структура на данни, която е линейна. Състои се от елементи, подредени по линеен начин. Възможно е добавяне на елементи в списъка на различни позиции. Списъкът има свойство, наречено дължина (брой елементи в списъка). В тази тема ще научим за List vs Set.
Забележка : Внимавайте, тъй като списъците се различават от масивите. Списъкът има променлив размер, т.е. елементите могат да бъдат добавени в списъка, докато масивите имат фиксиран размер.
Set е абстрактна структура на данни. Комплектът има уникални елементи и редът на елементите не е важен. Елементите в набора не могат да бъдат достъпни чрез индекси. Самите елементи са индекси в набора и до определен елемент може да се достигне с помощта на foreach линия.
Сравнение между главата и списъка (Инфографика)
По-долу са топ 5 разликите между Списък срещу Set
Ключови разлики
Следват основните ключови мерки:
- Списъкът може да съдържа дублиращи се елементи, докато зададеният не може, тъй като набор може да има само уникални елементи. Затова използвайте set, ако искате уникални елементи.
- Елементите в списъка се подреждат, докато редът не е важен в набор, но зависи от изпълнението на набора.
- Достъпът до елементите се използва чрез индекси в списъка, докато самите елементи са индекси в набора. Следователно цикъла на 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.IList | 4. Интерфейсът, използван за внедряване на набор е System.Collections.ISet |
5. Списъкът се реализира като статичен списък (използващ масив) и динамичен списък (свързан списък) | 5. Наборите се реализират като хешсет (хешбит) и сортиран комплект (базиран на червено-черно дърво) |
Препоръчителни статии
Това е ръководство за Списък срещу Set. Тук сме обсъдили списъка срещу Задайте ключови разлики с инфографика и таблица за сравнение. Може да разгледате и следните статии, за да научите повече -
- C # Списък срещу масив
- C # масив срещу списък
- C # функции
- C # Команди