使用泛型來建立我們自己的列表

2021-08-08 19:04:43 字數 3265 閱讀 1811

在前面我們知道在c#中有乙個list類,可以儲存長度不限的資料。列表是使用了泛型來建立的,那我們可以通過泛型來建立自己的乙個列表,這樣我們能夠對泛型和列表有個更深刻的了解。

首先,我們知道列表其實就是乙個陣列,只不過構造的時候不需要指定長度,那麼我們首先要定義乙個泛型陣列和其中元素個數的變數。

class mylistwhere t:icomparable

有了mylist這個類之後,我們要去定義他的建構函式,陣列長度可填可不填。

//構造有引數組

public

mylist(int size)

}//構造無引數組

public

mylist()

這樣我們的列表就可以通過建構函式構造出來了,那麼列表的基本屬性是什麼呢?我們要能夠獲取這個列表的容量大小和元素個數。因為容量大小和元素個數我們只需要獲取它的數值,所以不用設定set方法。

//獲取容量大小

public

int capacity

}//獲取陣列內元素個數

public

int count

}

現在這個列表的建構函式和屬性都已經寫好了,那麼接下來我們需要寫這個列表的功能。功能如下

1.add()方法新增元素

//新增元素

public void add(t item)

else

}array[count] = item;

count++;

}

2.獲取列表的值(為了更方便地訪問列表,我們可以使用索引器訪問元素)

//獲取列表的值

public t getitem(int

index)

else

}//通過索引訪問元素

public t this[int

index] //從原始碼所獲取的方法

setelse

}}

3.插入元素

public

void insert(int

index, t item)

else

}else

array[index] = item;

count++; //插入完之後元素個數自增}}

else

}

4.移除指定位置元素

public

void removeat(int

index)

count--;

}else

}

5.從前往後取得元素在列表中的索引

//從前往後取得元素在列表中的索引

public

intindexof(t item)

}return -1;

}

6.從後往前取得元素在列表中的索引

//從後往前取得元素在列表中的索引

public

intlastindexof(t item)

}return -1;

}

7.對列表中的元素進行排序(氣泡排序)

public

void sort()}}

}

在這些功能裡,有些地方值得注意一下

使用泛型宣告的元素,當判斷是否相等的時候,不能使用」==」來判斷,只能使用equals()方法來判斷是否相等。

使用泛型宣告的元素,當判斷兩者的大小時,不能使用」>」或」<」來判斷,我們需要在類名後面加上」where t:icompareble」,給泛型繼承icompareble介面,然後使用compareto()方法,當比較完的值》0時,說明前面那個數比後面的數大,<0時說明前面的數比後面的數小。

下面貼出源**

class mylistwhere t:icomparable

}//構造無引數組

public

mylist()

//獲取容量大小

public

int capacity

}//獲取陣列內元素個數

public

int count

}//新增元素

public

void

add(t item)

else

}array[count] = item;

count++;

}//獲取列表的值

public t getitem(int index)

else

}//通過索引訪問元素

public t this[int index] //從原始碼所獲取的方法

setelse}}

//插入元素

public

void

insert(int index, t item)

else

}else

array[index] = item;

count++; //插入完之後元素個數自增}}

else

}//移除指定位置元素

public

void

removeat(int index)

count--;

}else

}//從前往後取得元素在列表中的索引

public

intindexof(t item)

}return -1;

}//從後往前取得元素在列表中的索引

public

intlastindexof(t item)

}return -1;

}//對列表中的元素進行排序(氣泡排序)

public

void

sort()}}

}}

//主函式

class program

console.writeline();

console.writeline(mylist.indexof(83));

console.writeline(mylist.lastindexof(18));

console.writeline();

mylist.sort();

for (int i = 0; i < mylist.count; i++)

console.readkey();

}}

泛型之列表的建立和使用

在前面,我們需要儲存很多態別一樣的資料的時候,我們一般都使用陣列來儲存並且管理,但是陣列有個缺點就是陣列的大小是固定的,那麼當我們不確定資料的個數的時候,該怎麼儲存呢?我們可以使用集合類來進行儲存資料,列表list就是集合類的一種。我們可以使用列表很方便的新增 刪除資料以及其他的操作。列表的建立 列...

非泛型列表到泛型列表的轉換

長夜漫漫,無心睡眠.剛剛在寫一段 用nhibernate從資料庫中讀取一組資料.我第一次使用了泛型的ilist.感覺不錯,只是稍微有一點問題,因為現在的nhibernate 1.0.2 還不支援泛型.所有在從criteria中取道資料後,還必須進行一次翻譯才能返回到ilist中.我寫的 如下 ili...

泛型類的建立和使用

有些人問我 物件導向程式設計 oop 的承諾在 我的回答是應該從兩個方面來看oop 你所使用的oop和你建立的oop。如果我們簡單地看一下如 果沒有如例如microsoft的.net,borland的vcl,以及所有的第三方元件這樣的oo框架,那麼很多高階的應用程式幾乎就無法建立。所 以,我們可以說...