Trong lập trình C#, SortedList<TKey, TValue>
là một cấu trúc dữ liệu lưu trữ các cặp khóa-giá trị, trong đó các phần tử được sắp xếp theo thứ tự tăng dần của khóa. Điều này giúp việc tìm kiếm, truy cập và duyệt qua các phần tử trở nên hiệu quả hơn.
Contents
1. Khởi tạo SortedList
Để sử dụng SortedList
, bạn cần khai báo và khởi tạo nó với kiểu dữ liệu cho khóa và giá trị:
using System.Collections.Generic;
SortedList<int, string> sortedList = new SortedList<int, string>();
Trong ví dụ này, SortedList
được khởi tạo với khóa kiểu int
và giá trị kiểu string
.
2. Thêm phần tử vào SortedList
Bạn có thể thêm các cặp khóa-giá trị vào SortedList
bằng phương thức Add
:
sortedList.Add(3, "Ba");
sortedList.Add(1, "Một");
sortedList.Add(2, "Hai");
Sau khi thêm, các phần tử sẽ được sắp xếp tự động theo thứ tự tăng dần của khóa:
1: Một
2: Hai
3: Ba
3. Truy cập phần tử trong SortedList
Bạn có thể truy cập giá trị dựa trên khóa bằng cách sử dụng chỉ mục của khóa:
string value = sortedList[2]; // Giá trị là "Hai"
Nếu bạn cố gắng truy cập một khóa không tồn tại, chương trình sẽ ném ngoại lệ KeyNotFoundException
.
4. Cập nhật giá trị trong SortedList
Để cập nhật giá trị của một khóa đã tồn tại, bạn có thể gán trực tiếp:
sortedList[2] = "Hai Mới";
Nếu khóa không tồn tại, một cặp khóa-giá trị mới sẽ được thêm vào SortedList
.
5. Xóa phần tử khỏi SortedList
Bạn có thể xóa một phần tử bằng phương thức Remove
hoặc RemoveAt
:
sortedList.Remove(1); // Xóa phần tử có khóa là 1
sortedList.RemoveAt(0); // Xóa phần tử tại vị trí 0
6. Duyệt qua các phần tử trong SortedList
Bạn có thể sử dụng vòng lặp foreach
để duyệt qua các cặp khóa-giá trị:
foreach (KeyValuePair<int, string> kvp in sortedList)
{
Console.WriteLine($"Khóa: {kvp.Key}, Giá trị: {kvp.Value}");
}
7. Một số phương thức và thuộc tính quan trọng
Count
: Trả về số lượng phần tử trongSortedList
.
int count = sortedList.Count;
ContainsKey
: Kiểm tra sự tồn tại của một khóa trongSortedList
.
bool exists = sortedList.ContainsKey(2); // Trả về true nếu khóa 2 tồn tại
ContainsValue
: Kiểm tra sự tồn tại của một giá trị trongSortedList
.
bool exists = sortedList.ContainsValue("Hai");
Clear
: Xóa tất cả các phần tử trongSortedList
.
sortedList.Clear();
8. Lưu ý
- Không cho phép khóa trùng lặp: Mỗi khóa trong
SortedList
phải là duy nhất. Nếu bạn cố gắng thêm một khóa đã tồn tại, chương trình sẽ ném ngoại lệArgumentException
. - Hiệu suất:
SortedList
sử dụng mảng bên trong để lưu trữ dữ liệu, do đó việc thêm và xóa phần tử có thể tốn kém về mặt hiệu suất nếu danh sách lớn. Nếu bạn cần thêm và xóa phần tử thường xuyên, hãy xem xét sử dụngSortedDictionary
để có hiệu suất tốt hơn.
SortedList
là một cấu trúc dữ liệu hữu ích khi bạn cần lưu trữ các cặp khóa-giá trị và duy trì thứ tự sắp xếp theo khóa. Tuy nhiên, hãy cân nhắc về hiệu suất và yêu cầu cụ thể của ứng dụng để lựa chọn cấu trúc dữ liệu phù hợp.