Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Dung lượng (Capacity) của SortedList trong C#

Giới thiệu

SortedList duy trì mảng nội bộ cho khóa và giá trị. Capacity là dung lượng tối đa trước khi phải cấp phát lại mảng, trong khi Count là số phần tử thực tế. Capacity tự động tăng khi cần.

Ví dụ 1: Capacity mặc định với 10 phần tử

using System;
using System.Collections;

public class Demo
{
    public static void Main(String[] args)
    {
        SortedList sortedList = new SortedList();
        sortedList.Add("A", "1");
        sortedList.Add("B", "2");
        sortedList.Add("C", "3");
        sortedList.Add("D", "4");
        sortedList.Add("E", "5");
        sortedList.Add("F", "6");
        sortedList.Add("G", "7");
        sortedList.Add("H", "8");
        sortedList.Add("I", "9");
        sortedList.Add("J", "10");
        
        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in sortedList)
        {
            Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
        }
        
        Console.WriteLine("Count of SortedList key-value pairs = " + sortedList.Count);
        Console.WriteLine("Capacity of SortedList = " + sortedList.Capacity);
        
        Console.WriteLine("\nEnumerator to iterate through the SortedList...");
        IDictionaryEnumerator demoEnum = sortedList.GetEnumerator();
        while (demoEnum.MoveNext())
        {
            Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
        }
    }
}

Kết quả

SortedList elements...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = D, Value = 4
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10
Count of SortedList key-value pairs = 10
Capacity of SortedList = 16
Enumerator to iterate through the SortedList...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = D, Value = 4
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10

Ví dụ 2: Capacity sau khi Clear()

using System;
using System.Collections;

public class Demo
{
    public static void Main(String[] args)
    {
        SortedList sortedList = new SortedList();
        sortedList.Add("A", "1");
        sortedList.Add("B", "2");
        sortedList.Add("C", "3");
        sortedList.Add("D", "4");
        sortedList.Add("E", "5");
        sortedList.Add("F", "6");
        
        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in sortedList)
        {
            Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
        }
        
        Console.WriteLine("Count of SortedList key-value pairs = " + sortedList.Count);
        Console.WriteLine("Capacity of SortedList = " + sortedList.Capacity);
        
        sortedList.Clear();
        
        Console.WriteLine("Count of SortedList key-value pairs = " + sortedList.Count);
        Console.WriteLine("Capacity of SortedList = " + sortedList.Capacity);
    }
}

Kết quả

SortedList elements...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = D, Value = 4
Key = E, Value = 5
Key = F, Value = 6
Count of SortedList key-value pairs = 6
Capacity of SortedList = 16
Count of SortedList key-value pairs = 0
Capacity of SortedList = 16

Lưu ý quan trọng

  • Clear() chỉ đặt Count = 0, KHÔNG giảm Capacity
  • Để giảm bộ nhớ: sortedList.TrimExcess() (tốn chi phí copy mảng)
  • Khởi tạo với dung lượng: new SortedList(capacity)
  • Capacity luôn ≥ Count

Khuyến nghị hiện đại

Sử dụng SortedList<TKey, TValue> (generic) trong namespace System.Collections.Generic để an toàn kiểu và hiệu suất tốt hơn.