C# cơ bản .NET Core
Collection - List (Bài trước)
(Bài tiếp) Queue / Stack

SortedList trong C#

Nếu tập dữ liệu của bạn được sắp xếp dựa trên một key (khóa), thì bạn có thể dùng đến SortedList<Tkey,TValue>. Lớp này sắp xếp dữ liệu dựa trên một key, kiểu đề làm key là bất kỳ.

SortedList được định nghĩa ở namespace: System.Collections, sử dụng bạn cần nạp namespace gồm:

using System.Collections;
using System.Collections.Generic;

Một đối tượng dữ liệu lưu vào SortedList dưới dạng cặp key/value, truy cập đến phần tử thông qua key hoặc thông qua vị trí (index) của dữ liệu trong danh sách. Chú ý, không cho phép trùng key.

Các thuộc tính, phương thức trong SortedList

Thành viên Diễn giải
Count Thuộc tính cho biết số phần tử
[key] Indexer truy cập đến phần tử có key
Keys Thuộc tính là danh sách các key trong danh sách sắp xếp
Values Thuộc tính lấy danh sách các giá trị trong danh sách
Add(key, value) Thêm một phần tử vào danh sách
Remove(key) Xóa phần tử bằng key của nó
Clear() Loại bỏ tất cả các phần tử khỏi danh sách
ContainKey(key) Kiểm tra có phần tử nào có khóa là key
ContainValue(value) Kiểm tra có phần tử nào có giá trị là value
IndexOfKey(key) Lấy chỉ số của phần tử có khóa là key
IndexOfValue(value) Lấy chỉ số của phần tử có giá trị là value

Ví dụ SortedList

Ví dụ tạo danh sách các sản phẩm, mỗi sản phẩm lưu vào danh sách với key tương ứng là tên và giá trị là mã sản phẩm. Từ đó, thực hiện một số thao tác trên danh sách này

public static void test () {

      // Khởi tạo SortedList
      var products = new SortedList<string, string> ();
      products.Add ("Iphone 6", "P-IPHONE-6"); // Thêm vào phần tử mới (key, value)
      products.Add ("Laptop Abc", "P-LAP");
      products["Điện thoại Z"] = "P-DIENTHOAI"; // Thêm vào phần tử bằng Indexer
      products["Tai nghe XXX"] = "P-TAI";       // Thêm vào phần tử bằng Indexer


      // Duyệt qua các phần tử, mỗi phần tử lấy key/value lưu trong biến
      // kiểu KeyValuePair
      Console.WriteLine ("TÊN VÀ MÃ");
      foreach (KeyValuePair<string, string> p in products) {
        Console.WriteLine ($"    {p.Key} - {p.Value}");
      } 
      // kết quả: (để ý danh sách đã xếp theo key)
      // TÊN và MÃ
      //     Điện thoại Z - P-DIENTHOAI
      //     Iphone 6 - P-IPHONE-6
      //     Laptop Abc - P-LAP
      //     Tai nghe XXX - P-TAI

      // Đọc value khi biết key
      string productName = "Tai nghe XXX";
      Console.WriteLine ($"{productName} có mã là {products[productName]}");
    
      // Cập nhật giá trị vào phần tử theo key
      products[productName] = "P-TAI-UPDATED";

      // Duyệt qua các giá trị
      Console.WriteLine ("\nDANH SÁCH MÃ SẢN PHẢM");
      foreach (var product_code in products.Values) {
          Console.WriteLine ($"--- {product_code}");
      } 
      // kết quả:
      // DANH SÁCH MÃ SẢN PHẢM
      // -- P-DIENTHOAI
      // -- P-IPHONE-6
      // -- P-LAP
      // -- P-TAI-UPDATED

      // Duyệt qua các key
      Console.WriteLine ("\nDANH SÁCH TÊN SP");
      foreach (var product_name in products.Keys) {
        Console.WriteLine ($"... {product_name}");
      } 
      // DANH SÁCH TÊN SP
      // -- Điện thoại Z
      // -- Iphone 6
      // -- Laptop Abc
      // -- Tai nghe XXX

}

Tham khảo mã nguồn: CS024_SomeCollections hoặc tải về ex024


Đăng ký nhận bài viết mới
Collection - List (Bài trước)
(Bài tiếp) Queue / Stack