HashSet<T>, SortedSet<T>, Queue<T>, Stack<T>
Разберитесь в различиях между множествами уникальных и упорядоченных элементов, а также коллекциями FIFO/LIFO; попрактикуйтесь с Add/Contains, Enqueue/Dequeue и Push/Pop.
«HashSet<T>, SortedSet<T>, Queue<T>, Stack<T>» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.
Виды коллекций
Цель: выбрать подходящую коллекцию.
- HashSet<T>: уникальные значения и быстрый поиск
- SortedSet<T>: уникальные и отсортированные значения
- Queue<T>: FIFO
- Stack<T>: LIFO
Основы HashSet
HashSet<T> хранит уникальные значения; Add возвращает false для дубликатов; Contains работает быстро.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
HashSet<string> tags = new HashSet<string>();
bool a1 = tags.Add("red"); // true
bool a2 = tags.Add("blue"); // true
bool a3 = tags.Add("red"); // false (duplicate ignored)
Console.WriteLine("Has red? " + tags.Contains("red"));
Console.WriteLine("Count = " + tags.Count); // 2
}
}
Основы SortedSet
SortedSet<T> сохраняет элементы уникальными и отсортированными по мере их добавления.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
SortedSet<int> scores = new SortedSet<int>();
scores.Add(30);
scores.Add(10);
scores.Add(20);
scores.Add(20); // duplicate ignored
foreach (int s in scores)
{
Console.WriteLine(s); // 10, 20, 30 (sorted ascending)
}
Console.WriteLine("Min = " + (scores.Count > 0 ? scores.Min : 0));
Console.WriteLine("Max = " + (scores.Count > 0 ? scores.Max : 0));
}
}
Очередь (FIFO)
Queue<T> работает по принципу FIFO: Enqueue → Dequeue. Используйте Peek, чтобы просмотреть элемент, не удаляя его.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
Queue<string> q = new Queue<string>();
q.Enqueue("A");
q.Enqueue("B");
q.Enqueue("C");
Console.WriteLine("Peek = " + q.Peek()); // A
Console.WriteLine(q.Dequeue()); // A
Console.WriteLine(q.Dequeue()); // B
Console.WriteLine("Count = " + q.Count); // 1
}
}
Стек (LIFO)
Stack<T> работает по принципу LIFO: Push → Pop. Peek просматривает верхний элемент.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
Stack<int> st = new Stack<int>();
st.Push(1);
st.Push(2);
st.Push(3);
Console.WriteLine("Peek = " + st.Peek()); // 3
Console.WriteLine(st.Pop()); // 3
Console.WriteLine(st.Pop()); // 2
Console.WriteLine("Count = " + st.Count); // 1
}
}
Советы по выбору
Шпаргалка:
- Нужны уникальность и быстрый поиск → HashSet<T>
- Нужны уникальность и сортированный порядок → SortedSet<T>
- Обработка в порядке поступления → Queue<T> (FIFO)
- Обработка от последнего поступившего к первому → Stack<T> (LIFO)
Выбор множества
Повторение
Повторение: используйте множества для обеспечения уникальности (HashSet, SortedSet), а для упорядоченной обработки выбирайте FIFO (Queue) или LIFO (Stack).
Часто задаваемые вопросы
Урок «HashSet<T>, SortedSet<T>, Queue<T>, Stack<T>» бесплатный?
Да — полный текст урока «HashSet<T>, SortedSet<T>, Queue<T>, Stack<T>» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.
Чему я научусь в уроке «HashSet<T>, SortedSet<T>, Queue<T>, Stack<T>»?
Разберитесь в различиях между множествами уникальных и упорядоченных элементов, а также коллекциями FIFO/LIFO; попрактикуйтесь с Add/Contains, Enqueue/Dequeue и Push/Pop. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «HashSet<T>, SortedSet<T>, Queue<T>, Stack<T>»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- HashSet , SortedSet , Queue , Stack
- ConcurrentDictionary и неизменяемые коллекции
- Равенство и хеширование (значения и ссылки)