Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Kiểm tra Hashtable có chứa giá trị cụ thể trong C#

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ị.
  • Hashtable cho 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 override Equals() 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).