Lọc thẻ không trùng lặp với HashSet trong C#
Trong bài học này, bạn sẽ dùng HashSet để giữ lại các thẻ không trùng lặp, bỏ qua sự khác biệt giữa chữ hoa và chữ thường.
Giới thiệu
HashSet<T> là collection chỉ lưu mỗi giá trị một lần, nên rất phù hợp khi bạn cần tính duy nhất, ví dụ danh sách thẻ (tag) của một bài viết. HashSet cũng kiểm tra rất nhanh một giá trị đã có trong tập hợp hay chưa.
HashSet được tạo với bộ so sánh StringComparer.OrdinalIgnoreCase, nên "C#" và "c#" được coi là cùng một thẻ. Khi khởi tạo với ba giá trị, thẻ trùng bị bỏ qua và tập hợp chỉ còn 2 phần tử. Nếu không có bộ so sánh này, hai cách viết khác nhau sẽ trở thành hai thẻ riêng biệt.
Xem cách hoạt động
Chọn một phép toán để tô sáng kết quả trên sơ đồ. Thêm một giá trị đã có trong set để thấy phần tử trùng bị bỏ qua.
Ví dụ C# chạy được
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tags = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "C#", "dotnet", "c#" };
Console.WriteLine(tags.Count);
}
}
2Luyện tập với trình gỡ lỗi
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Loại Bỏ Phần Tử Trùng Lặp Chỉ giữ lại lần xuất hiện đầu tiên của mỗi giá trị. Dễ
- Pangram Check A pangram contains every English letter at least once. Dễ