บทความนี้สาธิตวิธีตรวจสอบว่า Hashtable มีค่า (value) ที่ระบุอยู่หรือไม่ โดยใช้เมธอด ContainsValue() ใน C#
ตัวอย่างที่ 1: ตรวจสอบค่าที่มีอยู่ใน Hashtable
using System;
using System.Collections;
public class Demo
{
public static void Main()
{
Hashtable hash = new Hashtable();
hash.Add("1", "A");
hash.Add("2", "B");
hash.Add("3", "C");
hash.Add("4", "D");
hash.Add("5", "E");
hash.Add("6", "F");
hash.Add("7", "G");
hash.Add("8", "H");
hash.Add("9", "I");
hash.Add("10", "J");
Console.WriteLine("Hashtable Key and Value pairs...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} and {1}", entry.Key, entry.Value);
}
Console.WriteLine("Is Hashtable having fixed size? = " + hash.IsFixedSize);
Console.WriteLine("If Hashtable read-only? = " + hash.IsReadOnly);
Console.WriteLine("The Hashtable consists of the value? = " + hash.ContainsValue("H"));
}
}
ผลลัพธ์
Hashtable Key and Value pairs... 10 and J 1 and A 2 and B 3 and C 4 and D 5 and E 6 and F 7 and G 8 and H 9 and I Is Hashtable having fixed size? = False If Hashtable read-only? = False The Hashtable consists of the value? = True
ตัวอย่างที่ 2: ตรวจสอบทั้งคีย์และค่าใน Hashtable
using System;
using System.Collections;
public class Demo
{
public static void Main()
{
Hashtable hash = new Hashtable();
hash.Add("One", "Katie");
hash.Add("Two", "John");
hash.Add("Three", "Barry");
hash.Add("Four", "Mark");
hash.Add("Five", "Harry");
hash.Add("Six", "Nathan");
hash.Add("Seven", "Tom");
hash.Add("Eight", "Andy");
hash.Add("Nine", "Illeana");
hash.Add("Ten", "Tim");
Console.WriteLine("Hashtable Key and Value pairs...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} and {1}", entry.Key, entry.Value);
}
Console.WriteLine("Is Hashtable having fixed size? = " + hash.IsFixedSize);
Console.WriteLine("If Hashtable read-only? = " + hash.IsReadOnly);
Console.WriteLine("The Hashtable consists of the key? = " + hash.ContainsKey("Seven"));
Console.WriteLine("The Hashtable consists of the value? = " + hash.ContainsValue("Illeana"));
}
}
ผลลัพธ์
Hashtable Key and Value pairs... One and Katie Ten and Tim Five and Harry Three and Barry Seven and Tom Two and John Four and Mark Eight and Andy Nine and Illeana Six and Nathan Is Hashtable having fixed size? = False If Hashtable read-only? = False The Hashtable consists of the key? = True The Hashtable consists of the value? = True
สรุป
- ใช้
ContainsValue(object value)เพื่อตรวจสอบว่ามีค่าที่ระบุอยู่ใน Hashtable หรือไม่ — คืนค่าbool - ใช้
ContainsKey(object key)เพื่อตรวจสอบคีย์ - Hashtable ไม่รับประกันลำดับข้อมูล — การวนลูปอาจได้ลำดับต่างจากที่เพิ่มเข้าไป
- คุณสมบัติ
IsFixedSizeและIsReadOnlyคืนค่าfalseสำหรับ Hashtable ทั่วไป - ประสิทธิภาพ:
ContainsKey()เร็วกว่าContainsValue()มาก เพราะคีย์ใช้ hashing (O(1)) ส่วนค่าต้อง linear search (O(n)) - แนะนำ: ใช้
Dictionary<TKey, TValue>แทนในโค้ดใหม่ — มี type safety, generic, และประสิทธิภาพดีกว่า