Введение в список против Set в C #
List и Set - две из многих структур данных, поддерживаемых C #. Список - это абстрактная структура данных, которая является линейной. Он состоит из элементов, расположенных линейно. Можно добавлять элементы в список на разных позициях. Список имеет свойство с именем length (количество элементов в списке). В этой теме мы собираемся узнать о Списке против Сета.
Примечание : будьте осторожны, так как списки отличаются от массивов. Списки имеют переменный размер, т.е. элементы могут добавляться в список, в то время как массивы имеют фиксированный размер.
Set - это абстрактная структура данных. Набор имеет уникальные элементы и порядок элементов не важен. Элементы в наборе не могут быть доступны через индексы. Сами элементы являются индексами в наборе, и к конкретному элементу можно получить доступ с помощью цикла foreach.
Сравнение лицом к лицу между списком и множеством (инфографика)
Ниже приведены 5 основных отличий между списком и множеством
Ключевые отличия
Ниже приведены основные выводы:
- Список может содержать повторяющиеся элементы, в то время как набор не может, так как набор может иметь только уникальные элементы. Так что используйте set, если вы хотите уникальные элементы.
- Элементы в списке упорядочены, в то время как порядок в наборе не важен, но зависит от реализации набора.
- Доступ к элементам осуществляется с помощью индексов в списке, а сами элементы являются индексами в наборе. Следовательно, цикл foreach используется для доступа к элементам набора. Однако его также можно использовать для доступа к элементам списка, как показано в коде списка выше.
Давайте посмотрим на некоторые методы интерфейсов списка и набора.
Список
Ниже приведены некоторые методы, реализованные интерфейсом IList:
- int Add (element) - добавить элемент в список (в конце) и вернуть значение, указывающее на успешную вставку.
- void Insert (int, element) - вставить элемент в заданную позицию в списке
- void Clear () - удалить все элементы из списка
- bool Contains (element) - проверить, присутствует ли элемент в списке
- void Remove (element) - удалить данный элемент из списка
- void RemoveAt (int) - удалить элемент в заданной позиции
- int IndexOf (element) - вернуть позицию элемента
- this (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 (element) - возвращает true, если элемент добавлен в набор при условии, что его нет в наборе, иначе возвращается false
- bool Contains (element) - возвращает true, если элемент уже присутствует в наборе, иначе возвращает false
- bool Remove (element) - возвращает true, если элемент существует в наборе и может быть удален, иначе возвращает false
- 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 - возвращает количество элементов в наборе
Ниже приведен пример кода для набора:
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. Наборы реализованы в виде хэш-набора (hashtable) и отсортированного набора (на основе красно-черного дерева) |
Рекомендуемые статьи
Это руководство к списку против набора. Здесь мы обсудили ключевые различия между списком и множеством с помощью инфографики и таблицы сравнения. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -
- Список C # против массива
- C # Array vs List
- Функции C #
- Команды C #