在前面,我們需要儲存很多態別一樣的資料的時候,我們一般都使用陣列來儲存並且管理,但是陣列有個缺點就是陣列的大小是固定的,那麼當我們不確定資料的個數的時候,該怎麼儲存呢?
我們可以使用集合類來進行儲存資料,列表list就是集合類的一種。我們可以使用列表很方便的新增、刪除資料以及其他的操作。
列表的建立
列表可以儲存任何型別的資料,在建立列表物件的時候,我們首先要指定要建立的這個物件要儲存什麼型別的(泛型)
建立列表的語法規則
//1.建立列表方法1
list
scorelist =
newlist
();new
list
();new
list
<
string
>();
//2.建立列表方法2
var scorelist =
newlist
();
這裡要說的是,為什麼列表可以儲存不指定數量的資料呢?
列表內部資料實際上是使用陣列進行的儲存,乙個空的列表內部會有乙個長度為0的陣列,當我們給列表新增元素的時候,列表的容量會擴大為4,如果再新增到第五個元素的時候,列表的大小會重新設定為8,以此類推,每次增加的容量為前一次的兩倍。
那麼列表的容量是怎麼增加的?
每當列表的容量不夠用的時候,它會建立乙個新的陣列,使用array.copy()方法將舊陣列的元素全部複製到新陣列中。但是為了節省時間,如果我們事先知道要儲存的個數,可以利用列表的建構函式指定容量的大小。
在這裡有個概念需要區分一下:
列表的兩種遍歷方式
用法和陣列一樣,不詳細描述
list list = new list();
list.add(12);
list.add(34);
list.add(56);
list.add(78);
list.add(90);
list.add(453);
list.add(342);
list.add(8976);
//for迴圈遍歷
for(int i = 0; i < list.count; i++)
console.writeline();
//foreach迴圈遍歷
foreach(int temp in list)
操作列表的屬性和方法
既然列表和陣列一樣能夠儲存資料,那麼也可以運算元據。這裡寫出一些比較常用的列表操作的方法,如果想要檢視列表其他的操作方法,可以在vs裡將游標移到list上按f12鍵。
capacity獲取容量大小
add()方法新增元素
insert()方法插入元素
[index]訪問元素
count屬性訪問元素個數
removeat()方法移除指定位置的元素
indexof()方法取得乙個元素所在列表中的索引位置;lastindexof()從後往前搜尋,搜尋到滿足條件的就停止,沒有找到返回-1
sort()方法對列表中的元素進行從小到大排序
下面用乙個隨機生成的列表來實現上面所說的操作
class program
foreach(int temp in list)
console.writeline();
console.writeline("獲取容量大小");
console.writeline(list.capacity);
//2.插入元素
list.insert(3, 1000);
console.writeline("插入元素'1000'後");
foreach (int temp in list)
console.writeline();
//3.訪問元素
console.writeline("訪問第5個元素");
console.writeline(list[4]);
//4.訪問元素個數
console.writeline("訪問元素個數");
console.writeline(list.count);
//5.移除指定位置元素
console.writeline("移除第5個元素");
list.removeat(4);
foreach (int temp in list)
console.writeline();
//6.取得插入元素的位置
console.writeline("取得插入元素的位置");
int index = list.indexof(1000);
console.writeline(index);
方法是從後往前搜尋
//7.對列表進行排序
console.writeline("對列表進行排序");
list.sort();
foreach (int temp in list)
console.readkey();
}}
泛型類的建立和使用
有些人問我 物件導向程式設計 oop 的承諾在 我的回答是應該從兩個方面來看oop 你所使用的oop和你建立的oop。如果我們簡單地看一下如 果沒有如例如microsoft的.net,borland的vcl,以及所有的第三方元件這樣的oo框架,那麼很多高階的應用程式幾乎就無法建立。所 以,我們可以說...
使用泛型來建立我們自己的列表
在前面我們知道在c 中有乙個list類,可以儲存長度不限的資料。列表是使用了泛型來建立的,那我們可以通過泛型來建立自己的乙個列表,這樣我們能夠對泛型和列表有個更深刻的了解。首先,我們知道列表其實就是乙個陣列,只不過構造的時候不需要指定長度,那麼我們首先要定義乙個泛型陣列和其中元素個數的變數。clas...
剖析C 2 0泛型類的建立和使用
c 中的泛型支援另外一些提煉。例如,乙個方法或類可以有多個引數化的型別並且c 泛型還支援where約束 它用來具體要求型別化引數的型別。例如,如果乙個泛型型別必須實現介面idisposable,那麼c 泛型是支援實現這一限制的。在文章的最後我們還要看一下約束問題。閒話少說,讓我們言歸正傳。using...