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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- HashSet 、SortedSet 、Queue 、Stack
- ConcurrentDictionary とイミュータブルコレクション
- 等価性とハッシュ(値と参照)