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

構建可反轉排序的泛型字典類(1)--雛形(1)

編輯:關於C語言

構建可反轉排序的泛型字典類

前言

前段時間為了查找泛型資料,我翻譯了O'Reilly 出版的《C# Cookbook》這本書的幾個關於泛型的章節。其中“4.8 反轉Sorted List裡的內容”(見

http://cgbluesky.blog.163.com/blog/static/2412355820081211016581/ )這一節中有一個接近1300行代碼的例子。當時看到這個例子嚇了一跳,這是一個足以讓人頭暈眼花的數字。粗略看了一下,感覺代碼質量非常高,非常值得我們去學習。於是決定寫一系列文章分析它,象搭積木一樣逐步把這個ReversibleSortedList構建完成。

在讀這一篇文章之前,您需要明白一件事:如果只在一個項目裡用到這個類,有必要花費1300行代碼去構建它嗎?我個人的觀點是沒有必要。FCL(Framework Class Library)中有很多現成的東西,拿過來用就行了。那還有什麼理由去研究它呢?我提供以下幾點做為參考:

l 想通過閱讀高質量的代碼來提高自己。

l 對FCL如此著迷,想通過它邁出第一步。

l 您希望自己的代碼有機會給其他程序員使用,換句話說,您面向的是程序員,您是一個組件編寫者。從某一方面說,您越麻煩,就意味著您的用戶越方便。

呵呵,不那麼多疲話了,開始工作。

雛形

你想構建一個集合類用於存儲數據,它裡面的值是成對出現的,每一對值都包含“鍵”和“值”兩個部分。鍵和值裡存放的數據類型是不確定的,最好什麼類型放到裡面都適用。想起了什麼?就是它!泛型!真是太偉大了!

接下來要考慮的問題是采用什麼樣的方式來存儲這些值,你覺得自己的數據結構學得還比較好,決定要控制一切。在所有集合類型中,數組的速度是最快的,而且它使用方便並且是類型安全的,唯一的缺點就是容量固定。好!不管那麼多了,用的就是它。先把代碼寫出來再說。

public class ReversibleSortedList<TKey, TValue>
{
  private TKey[] keys; //鍵數組
  private TValue[] values; //值數組
}

總算邁出了第一步,確定了大的方向。但是數組是容量固定的,如何能讓它的容量可以隨著元素的增長而自動增長呢?即然要控制容量,那就要有一個容量屬性,用於讀取和設置容量。先從讀取開始,容量值就是數組keys或values的長度。好,繼續添加代碼:

public class ReversibleSortedList<TKey, TValue>
{
  private TKey[] keys; //鍵數組
  private TValue[] values; //值數組
public int Capacity //容量屬性
  {
    get
    {
      return this.keys.Length;
    }
  }
}

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