Trong lập trình C#, Dictionary<TKey, TValue>
và 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) và 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àoDictionary
. 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 trongDictionary
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ị trongDictionary
.
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àoHashSet
. 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ỏiHashSet
.
bool removed = hashSet.Remove(1);
Contains(T item)
: Kiểm tra xem một phần tử có tồn tại trongHashSet
hay không.
bool exists = hashSet.Contains(1);
Count
: Trả về số lượng phần tử trongHashSet
.
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 Dictionary
và HashSet
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#.