Giới thiệu
Để kiểm tra xem Hashtable có chứa một giá trị cụ thể hay không, ta sử dụng phương thức ContainsValue(). Khác với ContainsKey() (hoặc Contains()) kiểm tra khóa, phương thức này duyệt qua tất cả giá trị để tìm kiếm.
Ví dụ 1
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 giá trị 'H'? = " + hash.ContainsValue("H"));
}
}
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 giá trị 'H'? = True
Ví dụ 2
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"));
Console.WriteLine("Hashtable có chứa giá trị 'Illeana'? = " + hash.ContainsValue("Illeana"));
}
}
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 Hashtable có chứa giá trị 'Illeana'? = True
Lưu ý quan trọng
- Phương thức
ContainsValue()có độ phức tạp O(n) vì phải duyệt qua tất cả giá trị. Hashtablecho phép giá trị trùng lặp và giá trịnull.- So sánh giá trị sử dụng
Equals(), nên cần overrideEquals()vàGetHashCode()cho kiểu tự định nghĩa. - Trong .NET hiện đại, khuyến nghị sử dụng
Dictionary<TKey, TValue>và LINQ:dict.Values.Contains(value).