Giới thiệu
Lớp Hashtable trong namespace System.Collections lưu trữ các cặp khóa/giá trị. Để kiểm tra sự tồn tại của một khóa, ta sử dụng phương thức ContainsKey() hoặc Contains() (cả hai đều kiểm tra khóa).
Ví dụ 1
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("Các cặp khóa/giá trị trong Hashtable...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} và {1}", entry.Key, entry.Value);
}
Console.WriteLine("Hashtable có kích thước cố định? = " + hash.IsFixedSize);
Console.WriteLine("Hashtable chỉ đọc? = " + hash.IsReadOnly);
Console.WriteLine("Hashtable có chứa khóa 'Seven'? = " + hash.ContainsKey("Seven"));
}
}
Kết quả
Các cặp khóa/giá trị trong Hashtable... One và Katie Ten và Tim Five và Harry Three và Barry Seven và Tom Two và John Four và Mark Eight và Andy Nine và Illeana Six và Nathan Hashtable có kích thước cố định? = False Hashtable chỉ đọc? = False Hashtable có chứa khóa 'Seven'? = True
Ví dụ 2
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("Các cặp khóa/giá trị trong Hashtable...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} và {1}", entry.Key, entry.Value);
}
Console.WriteLine("Hashtable có kích thước cố định? = " + hash.IsFixedSize);
Console.WriteLine("Hashtable chỉ đọc? = " + hash.IsReadOnly);
Console.WriteLine("Hashtable có chứa khóa '5'? = " + hash.ContainsKey("5"));
}
}
Kết quả
Các cặp khóa/giá trị trong Hashtable... 10 và J 1 và A 2 và B 3 và C 4 và D 5 và E 6 và F 7 và G 8 và H 9 và I Hashtable có kích thước cố định? = False Hashtable chỉ đọc? = False Hashtable có chứa khóa '5'? = True
Lưu ý quan trọng
Hashtablekhông đảm bảo thứ tự các phần tử khi duyệt.- Phương thức
ContainsKey()vàContains()có độ phức tạp O(1) trung bình. Hashtablecho phép khóa lànull(khác vớiDictionary).- Trong .NET hiện đại, khuyến nghị sử dụng
Dictionary<TKey, TValue>vì hiệu suất tốt hơn và type-safe. - Thuộc tính
IsFixedSizeluôn trả vềfalsecho Hashtable thông thường.