0Pricing
C# Academy · Урок

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 — локальная установка не требуется.

Все уроки этого курса

  1. HashSet , SortedSet , Queue , Stack
  2. ConcurrentDictionary и неизменяемые коллекции
  3. Равенство и хеширование (значения и ссылки)
← Назад к C# Academy