C 學習記錄(23)集合

2021-08-21 04:01:04 字數 2321 閱讀 7591

集合:可以使用集合來維護物件組。與陣列不同,集合可以控制對集合內的物件進行訪問、搜尋和排序功能。本文主要介紹如何使用和建立集合類。

c#中的陣列實現為system.array 類的例項,它們只是集合類(collection classes)中的一種型別。集合的功能(包括基本功能)可以通過介面來實現,該介面不僅沒有限制我們使用基本集合類,例如system.array,相反,我們還可以建立自己的定製集合類。

system.collections 命名空間中的幾個介面提供了基本的組合功能:

 ienumerable 可以迭代集合中的項。

 icollection(繼承於ienumerable)可以獲取集合中項的個數,並能把項複製到乙個簡單的陣列型別中。

 ilist(繼承於ienumerable 和icollection)提供了集合的項列表,允許訪問這些項,並提供其他一些與項列表相關的基本功能。

 idictionary(繼承於ienumerable 和icollection)類似於ilist,但提供了可通過鍵值(而不是索引)訪問的項列表。

一.使用集合

arraylist animalarraylist = new arraylist();    //建立arraylist集合

///以下**用於初始化集合中的成員

cow mycow2 = new cow("hayley");

animalarraylist.add(mycow2);

animalarraylist.add(new chicken("roy"));

寫出每個animal物件的資訊

foreach (animal myanimal in animalarraylist)

object added to arraylist collection, " +

"name = ", myanimal.tostring(), myanimal.name);

console.writeline("arraylist collection contains objects.", animalarraylist.length);///獲取集合長度

簡單陣列是強型別化的,可以直接訪問它們所包含的項型別。所以您可以直接呼叫項的方法:

animalarray[0].feed();

陣列的型別是抽象型別animal,因此不能直接呼叫由派生類提供的方法,而必須使用資料型別轉換:

((chicken)animalarray[1]).layegg();

以下為arrayliat特有的:

使用remove()和removeat()方法刪除項

animalarraylist.removeat(0);

animalarraylist.remove(mycow2);

刪除索引為0的項,會使其他項在陣列中移動乙個位置,所以應使用索引0(而非1)來訪問chicken 物件,不再有索引為1的項了。

addrange()方法不是arraylist 提供的任何介面的一部分,這個方法專用於arraylist 類。它可以給集合新增乙個陣列。

animalarraylist.addrange(animalarray);///將乙個陣列新增到集合中

二.定義集合類

我們可以從乙個類中派生自己的集合,例如system.collections.collectionbase 類,這個抽象類提供了集合類的許多實現

方式。這是推薦使用的方式。

collectionbase 類有介面ienumerable、icollection 和ilist,但只提供了一些簡要的實現**,特別是ilist 的clear()和removeat()方法,以及icollection 的count 屬性。如果要使用提供的功能,就需要自己執行其他**。

public class animals : collectionbase///強型別集合:從collectionbase類中派生出集合類animals

public void remove(animal newanimal)    ///移除animal類成員的方法

public animals()

public animal this[int animalindex]    這個animalindex是集合的索引符,等價於陣列的下標

set    ///寫訪問器

}三.索引符

索引符(indexer)是一種特殊型別的屬性,可以把它新增到乙個類中,以提供類似於陣列的訪問。實際上,可以通過索引符提供更複雜的訪問,因為我們可以用方括號語法定義和使用複雜的引數型別。它最常見的乙個用法是對項執行簡單的數字索引。

上面集合類中定義了animal索引符。

static void main( )

console.readkey();

}

C 學習筆記(八) 集合

陣列最大的限制就是一旦建立好陣列,它們的大小就是固定的,不能在現有的陣列末尾新增新專案,除非建立乙個新的陣列。c 中的陣列是作為 system.array 類的例項來執行的,它們只是集合類中的一種。集合類一般用於處理物件列表,其功能要比簡單陣列要多,這些功能是通過執行 system.collecti...

C 學習筆記(八) 集合

陣列最大的限制就是一旦建立好陣列,它們的大小就是固定的,不能在現有的陣列末尾新增新專案,除非建立乙個新的陣列。c 中的陣列是作為 system.array 類的例項來執行的,它們只是集合類中的一種。集合類一般用於處理物件列表,其功能要比簡單陣列要多,這些功能是通過執行 system.collecti...

MongoDB學習2 集合

集合就是 mongodb 文件組,類似於 rdbms 關聯式資料庫管理系統 relational database management system 中的 集合存在於資料庫中,集合沒有固定的結構,這意味著你在對集合可以插入不同格式和型別的資料,但通常情況下我們插入集合的資料都會有一定的關聯性。比如...