34 Dictionary-HashSet

Trong lập trình C#, Dictionary<TKey, TValue>HashSet<T> là hai cấu trúc dữ liệu quan trọng, được sử dụng để lưu trữ và quản lý các tập hợp dữ liệu theo những cách khác nhau, phù hợp với các nhu cầu cụ thể trong quá trình phát triển ứng dụng.

1. Dictionary<TKey, TValue>

Dictionary là một tập hợp lưu trữ các cặp khóa (key)giá trị (value), cho phép truy cập nhanh chóng đến giá trị thông qua khóa tương ứng. Mỗi khóa trong Dictionary là duy nhất và không được phép trùng lặp.

Khởi tạo Dictionary:

using System.Collections.Generic;

var dictionary = new Dictionary<string, int>();

Các phương thức và thuộc tính chính:

  • Add(TKey key, TValue value): Thêm một cặp khóa-giá trị vào Dictionary. Nếu khóa đã tồn tại, sẽ ném ngoại lệ.
dictionary.Add("apple", 1);
  • Remove(TKey key): Xóa phần tử với khóa được chỉ định.
dictionary.Remove("apple");
  • ContainsKey(TKey key): Kiểm tra xem một khóa có tồn tại trong Dictionary hay không.
dictionary.Remove("apple");
  • TryGetValue(TKey key, out TValue value): Thử lấy giá trị dựa trên khóa; trả về true nếu thành công, ngược lại trả về false.
bool exists = dictionary.ContainsKey("apple");
  • Count: Trả về số lượng cặp khóa-giá trị trong Dictionary.
int count = dictionary.Count;

Ví dụ sử dụng Dictionary:

var dictionary = new Dictionary<string, int>
{
    { "apple", 1 },
    { "banana", 2 },
    { "cherry", 3 }
};

foreach (var kvp in dictionary)
{
    Console.WriteLine($"Khóa: {kvp.Key}, Giá trị: {kvp.Value}");
}

Kết quả:

Khóa: apple, Giá trị: 1
Khóa: banana, Giá trị: 2
Khóa: cherry, Giá trị: 3

2. HashSet<T>

HashSet là một tập hợp lưu trữ các phần tử duy nhất, không cho phép trùng lặp. Nó được thiết kế để cung cấp hiệu suất cao cho các thao tác như thêm, xóa và kiểm tra sự tồn tại của phần tử.

Khởi tạo HashSet:

using System.Collections.Generic;

var hashSet = new HashSet<int>();

Các phương thức và thuộc tính chính:

  • Add(T item): Thêm một phần tử vào HashSet. Trả về true nếu thêm thành công, false nếu phần tử đã tồn tại.
bool added = hashSet.Add(1);
  • Remove(T item): Xóa một phần tử khỏi HashSet.
bool removed = hashSet.Remove(1);
  • Contains(T item): Kiểm tra xem một phần tử có tồn tại trong HashSet hay không.
bool exists = hashSet.Contains(1);
  • Count: Trả về số lượng phần tử trong HashSet.
int count = hashSet.Count;

Ví dụ sử dụng HashSet:

var hashSet = new HashSet<string>
{
    "apple",
    "banana",
    "cherry"
};

hashSet.Add("apple"); // Không thêm được vì "apple" đã tồn tại

foreach (var item in hashSet)
{
    Console.WriteLine(item);
}

Kết quả:

apple
banana
cherry

3. So sánh DictionaryHashSet

  • Dictionary<TKey, TValue>: Sử dụng khi bạn cần lưu trữ các cặp khóa-giá trị và truy cập giá trị thông qua khóa. Khóa phải là duy nhất.
  • HashSet<T>: Sử dụng khi bạn cần một tập hợp các phần tử duy nhất, không trùng lặp, và không quan tâm đến thứ tự.

Cả hai cấu trúc này đều cung cấp hiệu suất cao cho các thao tác thêm, xóa và tìm kiếm, và được sử dụng rộng rãi trong các ứng dụng C#.

Để lại một bình luận 0

Your email address will not be published. Required fields are marked *