首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

打造可逆向排序的泛型字典類 (九 起):排序切換機制、TrimExcess 與 Capacity 屬性擴充

     編輯:關於C語言

排序方向屬性與 Sort 方法


private ListSortDirection _currentSortDirection = ListSortDirection.Descending;
public SortDirectionComparer<TKey> Comparer => _sortDirectionComparer;

public void Sort()
{
    if (_currentSortDirection != _sortDirectionComparer.SortDirection)
    {
        Array.Reverse(keys, 0, _size);
        Array.Reverse(values, 0, _size);
        _currentSortDirection = _sortDirectionComparer.SortDirection;
    }
}

僅在方向真正改變時才反轉陣列,O(n) 成本。比較器定義於第 2 節。

TrimExcess 修剪策略


public void TrimExcess()
{
    int threshold = (int)(keys.Length * 0.9);
    if (_size < threshold) Capacity = _size;
}

當實際元素少於容量 90% 時才縮減,避免頻繁重新分配。

Capacity 屬性加入 set 存取子


public int Capacity
{
    get => keys.Length;
    set => InternalSetCapacity(value, true);
}

InternalSetCapacity 內部處理陣列重新分配與資料複製。至此核心功能完備,進入最終整合測試。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved