程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 構建可反轉排序的泛型字典類(9完)--完善(1)

構建可反轉排序的泛型字典類(9完)--完善(1)

編輯:關於C語言

9. 完善

大樓已經蓋好,剩下的工作就是裝修,裝修好就可以入住了 。從本文的題目得知,這是一個可反轉排序的集合類,但我們只實現了降序插入 功能,如果希望把升序轉換為降序該怎麼辦呢?此例的解決方法是聲明一個代表 排序方向的屬性Comparer,並加入一個sort方法,調用sort方法時根據Comparer 屬性進行排序:

private ListSortDirection _currentSortDirection = ListSortDirection.Descending;  
public SortDirectionComparer<TKey> Comparer
  {
     get
    {
      return this._sortDirectionComparer;
    }
  }
  public void Sort()
  {
    // 檢查是否跟現有排序方向相同.
    if (this._currentSortDirection != this._sortDirectionComparer.SortDirection)
    {
       // 如果不同,則進行反轉.
      Array.Reverse (this.keys, 0, this._size);
      Array.Reverse (this.values, 0, this._size);
      // 設置當前排序.
      this._currentSortDirection = this._sortDirectionComparer.SortDirection;
    }
  }

其中SortDirectionComparer類是第二節所聲明的類,請參考:

http://cgbluesky.blog.163.com/blog/static/241235582008113103320 661/

接下來再增加一個剪除多余空間的功能:

//剪除多 余空間
  public void TrimExcess()
  {
    int num1 = (int)(this.keys.Length * 0.9);
    if (this._size < num1)
    {
      this.Capacity = this._size;
    }
}

當然,需要給Capacity屬性添加set方法

public int Capacity //容量屬性
  {
     get
    {
      return this.keys.Length;
     }
    set
    {
       this.InternalSetCapacity(value, true);
    }
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved