C 泛型List的用法

2021-06-27 14:33:02 字數 4613 閱讀 2372

**:

一、list命名空間:

system.collections.generic(程式集:mscorlib)

二、list描述:

1)、表示可通過索引訪問的物件的強型別列表;提供用於對列表進行搜尋、排序和操作的方法。

2)、是arraylist類的泛型等效類。

3)、可以使用乙個整數索引訪問此集合中的元素;索引從 零 開始。

4)、可以接收null空引用(vb中的nothing)。

5)、允許重複元素

三、list建構函式

名稱說明

list()

初始化 list類的新例項,該例項為空並且具有預設初始容量(0)。

list(ienumerable)

初始化 list類的新例項,該例項包含從指定集合複製的元素並且具有足夠的容量來容納所複製的元素。

list(int32)

始化 list類的新例項,該例項為空並且具有指定的初始容量。

說明:預設向 list新增元素時,將通過重新分配內部陣列,根據需要自動增大容量。如果可以估計集合的大小,那麼當指定初始容量後,將無需在向 list中新增元素時執行大量的大小調整操作。這樣可提高效能。

四、list屬性

名稱說明

capacity

獲取或設定該內部資料結構在不調整大小的情況下能夠容納的元素總數。

count

獲取 list中實際包含的元素數。

說明:capacity 是 list在需要調整大小之前可以儲存的元素數,count 則是 list中實際儲存的元素數。

五、list方法

名稱說明

add將物件新增到 list的結尾處。

addrange

將指定集合的元素新增到 list的末尾。

asreadonly

返回當前集合的唯讀 ilist包裝。

binarysearch(t)

使用預設的比較器在整個已排序的 list中搜尋元素,並返回該元素從零開始的索引。

binarysearch(t, icomparer)

使用指定的比較器在整個已排序的 list中搜尋元素,並返回該元素從零開始的索引。

binarysearch(int32, int32, t, icomparer)

使用指定的比較器在已排序 list的某個元素範圍中搜尋元素,並返回該元素從零開始的索引。

clear

從 list中移除所有元素。

contains

確定某元素是否在 list中。

convertall

將當前 list中的元素轉換為另一種型別,並返回包含轉換後的元素的列表。

copyto(t)

將整個 list複製到相容的一維陣列中,從目標陣列的開頭開始放置。

exists

確定 list是否包含與指定謂詞所定義的條件相匹配的元素。

find

搜尋與指定謂詞所定義的條件相匹配的元素,並返回整個 list中的第乙個匹配元素。

findindex(predicate)

搜尋與指定謂詞所定義的條件相匹配的元素,並返回整個 list中第乙個匹配元素的從零開始的索引。

foreach

對 list的每個元素執行指定操作。

getenumerator

返回迴圈訪問 list的列舉器。

indexof(t)

搜尋指定的物件,並返回整個 list中第乙個匹配項的從零開始的索引。

insert

將元素插入 list的指定索引處。

insertrange

將集合中的某個元素插入 list的指定索引處。

lastindexof(t)

搜尋指定的物件,並返回整個 list中最後乙個匹配項的從零開始的索引。

remove

從 list中移除特定物件的第乙個匹配項。

reverse()

將整個 list中元素的順序反轉。

sort()

使用預設比較器對整個 list中的元素進行排序。

trimexcess

將容量設定為 list中的實際元素數目(如果該數目小於某個閾值)。

trueforall

確定是否 list中的每個元素都與指定的謂詞所定義的條件相匹配。

說明:上述方法說明中有用到「謂詞」,謂詞就是predicate委託,它代表一組方法,該方法定義一組條件,並確定指定的引數物件是否符合這些條件,具體的參見示例程式。

六、常用方法例項

(1)建立及初始化:

listmylist = new list();//初始capacity為 零

listmylist2 = new list(30); //初始capacity為 30

listmylist3 = new list(new string );//初始capacity 為 4,並且元素已被複製

(2)新增乙個元素 list.add(t item)

mlist.add("d");

(3)新增集合元素

string arr2 =;

mlist.addrange(arr2);

(4)在index位置新增乙個元素 insert(int index,t item)

mlist.insert(1,"p");

(5)遍歷list中元素

foreach(t element in mlist) t的型別與mlist宣告時一樣

(6)刪除元素

list.remove(t item) 刪除乙個值

mlist.remove("a");

list.removeat(int index);刪除下標為index的元素

mlist.removeat(0);

list.removerange(int index,int count); 下標index開始,刪除count個元素

mlist.removerange(3,2);

(7)判斷某個元素是否在該list中

list.contains(t item) 返回true或false

if(mlist.contains"("g"))

console.writeline("g存在列表中");

else

mlist.add("g");

(8)給list裡面元素排序 list.sort() 預設是元素每乙個字母按公升序

mlist.sort();

(9)給list裡面元素順序反轉 list.reverse() 可以與list.sort()配合使用

(10)list清空 list.clear()

mlist.clear();

(11)capacity與count

1)、capacity在需要調整大小之前可儲存的元素數;count實際儲存的元素數。

2)、capacity總是大於或者等於count

七、list的注意事項

1、 list類既使用相等比較器又使用排序比較器。

諸如 contains、indexof、lastindexof 和 remove 這樣的方法對列表元素使用相等比較器。型別 t 的預設相等比較器按如下方式確定。如果型別 t 實現 iequatable泛型介面,則相等比較器為該介面的 equals(t) 方法;否則,預設相等比較器為 object.equals(object)。

諸如 binarysearch 和 sort 這樣的方法對列表元素使用排序比較器。型別 t 的預設比較器按如下方式確定。如果型別 t 實現 icomparable泛型介面,則預設比較器為該介面的 compareto(t) 方法;否則,如果型別 t 實現非泛型 icomparable 介面,則預設比較器為該介面的 compareto(object) 方法。如果型別 t 沒有實現其中任乙個介面,則不存在預設比較器,並且必須顯式提供比較器或比較委託。

2、 list不保證是排序的。在執行要求 list已排序的操作(例如 binarysearch)之前,您必須對 list進行排序。

3、 list不保證是排序的。在執行要求 list已排序的操作(例如 binarysearch)之前,您必須對 list進行排序。

4、 使用整數索引可以訪問此集合中的元素。此集合中的索引從零開始。

5、 list接受 null 作為引用型別的有效值並且允許有重複的元素。

6、 大多數情況下list執行得更好並且是型別安全的,可以替換arraylist,但是如果對型別 t 使用值型別,則編譯器將特別針對該值型別生成 list類的實現。這意味著不必對 list物件的列表元素進行裝箱就可以使用該元素,並且在建立大約 500 個列表元素之後,不對列表元素裝箱所節省的記憶體將大於生成該類實現所使用的記憶體。如果建立小於500個元素,建議使用arraylist.

C 泛型List用法

一 c 泛型list 用法 1.作用 用於解決一系列類似的問題。二 list的方法和屬性 方法或屬性 作用 capacity 用於獲取或設定list可容納元素的數量。當數量超過容量時,這個值會自動增長。您可以設定這個值以減少容量,也可以呼叫trin 方法來減少容量以適合實際的元素數目。count 屬...

C 泛型 使用泛型List

一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...

C 泛型 使用泛型List

一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...