Введение в список против Set в C #

List и Set - две из многих структур данных, поддерживаемых C #. Список - это абстрактная структура данных, которая является линейной. Он состоит из элементов, расположенных линейно. Можно добавлять элементы в список на разных позициях. Список имеет свойство с именем length (количество элементов в списке). В этой теме мы собираемся узнать о Списке против Сета.

Примечание : будьте осторожны, так как списки отличаются от массивов. Списки имеют переменный размер, т.е. элементы могут добавляться в список, в то время как массивы имеют фиксированный размер.

Set - это абстрактная структура данных. Набор имеет уникальные элементы и порядок элементов не важен. Элементы в наборе не могут быть доступны через индексы. Сами элементы являются индексами в наборе, и к конкретному элементу можно получить доступ с помощью цикла foreach.

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

Ниже приведены 5 основных отличий между списком и множеством

Ключевые отличия

Ниже приведены основные выводы:

  1. Список может содержать повторяющиеся элементы, в то время как набор не может, так как набор может иметь только уникальные элементы. Так что используйте set, если вы хотите уникальные элементы.
  2. Элементы в списке упорядочены, в то время как порядок в наборе не важен, но зависит от реализации набора.
  3. Доступ к элементам осуществляется с помощью индексов в списке, а сами элементы являются индексами в наборе. Следовательно, цикл 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.IList4. Интерфейс, используемый для реализации набора: System.Collections.ISet
5. Список реализован в виде статического списка (с использованием массива) и динамического списка (связанный список)5. Наборы реализованы в виде хэш-набора (hashtable) и отсортированного набора (на основе красно-черного дерева)

Рекомендуемые статьи

Это руководство к списку против набора. Здесь мы обсудили ключевые различия между списком и множеством с помощью инфографики и таблицы сравнения. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Список C # против массива
  2. C # Array vs List
  3. Функции C #
  4. Команды C #