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 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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>” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 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 และคอลเลกชันไม่เปลี่ยนแปลง
- ความเท่ากันและการแฮช (ค่ากับการอ้างอิง)