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 節。
public void TrimExcess()
{
int threshold = (int)(keys.Length * 0.9);
if (_size < threshold) Capacity = _size;
}
當實際元素少於容量 90% 時才縮減,避免頻繁重新分配。
public int Capacity
{
get => keys.Length;
set => InternalSetCapacity(value, true);
}
InternalSetCapacity 內部處理陣列重新分配與資料複製。至此核心功能完備,進入最終整合測試。