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

Làm việc với Hashtable và Dictionary trong C#

Hashtable

Lớp Hashtable đại diện cho tập hợp các cặp khóa-giá trị (key-value pairs) được tổ chức dựa trên mã băm (hash code) của khóa. Nó dùng khóa để truy cập các phần tử trong tập hợp.

Các phương thức thường dùng của Hashtable:

STTPhương thức & Mô tả
1Add(object key, object value): Thêm phần tử với khóa và giá trị chỉ định.
2Clear(): Xóa tất cả phần tử.
3ContainsKey(object key): Kiểm tra khóa có tồn tại không.
4ContainsValue(object value): Kiểm tra giá trị có tồn tại không.

Ví dụ Hashtable

using System;
using System.Collections;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add("D01", "Finance");
            ht.Add("D02", "HR");
            ht.Add("D03", "Operations");
            
            if (ht.ContainsValue("Marketing"))
            {
                Console.WriteLine("Tên phòng ban đã có trong danh sách");
            }
            else
            {
                ht.Add("D04", "Marketing");
            }
            
            ICollection key = ht.Keys;
            foreach (string k in key)
            {
                Console.WriteLine(k + ": " + ht[k]);
            }
            Console.ReadKey();
        }
    }
}

Kết quả

D04: Marketing
D02: HR
D03: Operations
D01: Finance

Dictionary<TKey, TValue>

Dictionary là tập hợp khóa-giá trị kiểu mạnh (generic), nằm trong namespace System.Collections.Generic.

Các phương thức chính:

STTPhương thức & Mô tả
1Add: Thêm cặp khóa-giá trị.
2Clear(): Xóa tất cả khóa và giá trị.
3Remove: Xóa phần tử theo khóa chỉ định.
4ContainsKey: Kiểm tra khóa tồn tại.
5ContainsValue: Kiểm tra giá trị tồn tại.
6Count: Đếm số cặp khóa-giá trị.

Ví dụ Dictionary

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        IDictionary<int, int> d = new Dictionary<int, int>();
        d.Add(1, 44);
        d.Add(2, 34);
        d.Add(3, 66);
        d.Add(4, 47);
        d.Add(5, 76);
        Console.WriteLine(d.Count); // Output: 5
    }
}

So sánh nhanh: Hashtable dùng kiểu object (boxing/unboxing), chậm hơn; Dictionary<TKey,TValue> kiểu mạnh, hiệu năng tốt hơn, type-safe.