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>」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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));
  }
}

Queue(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
  }
}

Stack(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時間対応のAIチューター)、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時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン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に戻る