深入.NET平臺和C#編程筆記第三章
第三章 使用集合組織相關數據
1.集合概念引入
集合:某些指定的對象(SE)集中在一起就是集合
如下是一個Hello Kitty的集合
數組:可以存儲相同數據類型的一堆數據的容器
2.集合ArrayList的使用
01.引子:
用ArrayList進行賦值的時候,需要使用Add()
但是對集合中元素的修正可以使用下標,eg.list[0]=1給新值
但是在集合中元素個數為0的情況下,不能用Add()方法之外的其他手段給集合中添加元素.
數組的局限性:由於給數組中添加元素,刪除元素的時候,特別麻煩,所以我想找一個替代數組的工具,來幫我們實現數組所能實現的功能。集合應運而生.
使用ArrayList首先需要引入命名空間
集合動態擴容原理:如果集合中元素個數為0,並沒有開辟空間
02.構造函數
概念:給類定義一個方法,方法名和類名相同,沒有返回值,連void都不能有。
03.非泛型集合在使用前,一定要先導入命名空間。
04.命名空間
保證在不同的命名空間下可以出現同名類。
weilengdeyu.Download()
Weiredeyxue.UPLoad()
3.集合中元素
1.常見屬性:
Capacity:集合占用空間
Count:集合存儲元素個數
2.常用方法:
添加:int Add(Object value) //添加一個對象到集合的末尾
遍歷:通過foreach遍歷
刪除:Remove()、RemoveAt()和Clear()
*:註意事項:如果刪除了集合中的某一個元素,那麽集合的索引會自動維護
Remove():刪除內容
RemoveAt():通過索引刪除
Clear():一次性移除集合中所有的元素
Contains():是否包含某個元素
3.常見錯誤:見PPT
寫自己的組件:其實就是你在微軟已有的組件上進行第二次封裝。例如
保證在TextBox中只能輸入數字。
比如說,現在TextBox內容你想要按照自己特定的格式打印。自己在TextBox動手腳,然後讓他支持對應格式的打印。
--01.ArrayList
刪除方法,包含,
02.命名空間
同名類便於區分,加快檢索硬盤上某個類的速度
Using System.Collections
Using System.Collections.Generic; //泛型命名,默認導入
03.var :隱式類型推斷
最後一個問題:
int num=5;
04.HashTable
第一個:刪除
沒有RemoveAt()
第二個:
三個方案:根據key拿到value
只能拿到value
DictionayEntry
Foreach( DictionayEntry item in table)
{
item.Value
//命名空間.類名
}
第三個:HashTable是一種無序的雙列集合。
第四個:ContainsKey()
4.集合初始化器,對象初始化器
ArrayList engineers = new ArrayList()
{
new SE(){Name = "周星星",Age = 26,
Gender = Gender.male,ID = "000",Popularity = 10},
new SE(){Name = "王賤賤",Age = 22,
Gender = Gender.female,ID = "111",Popularity = 20},
new SE(){Name = "周姐姐",Age = 30,
Gender = Gender.male,ID = "222",Popularity = 20}
};
5.HashTable
Hashtable 通常稱為哈希表
根據鍵(Key)可以查找到相應的值 (Value)
1.HashTable註意事項
01.HashTable類型的集合只能用foreach循環遍歷,因為沒有索引
02.HashTable集合中元素是無序的(不會按照Add的順序來展示元素內容)
03.HashTable中的key不能重復
04HashTabel沒有RemoveAt()
2.對HashTable遍歷三種方案:
☆:第一種方式,遍歷所有的keys,通過key的值獲取value
☆:第二種方式:遍歷所有的value集合
☆:第三種方式,同時遍歷key和value
六、泛型集合List<T>
泛型:就是為了約束ArrayList中元素類型,而制定的一個新的集合類型,該類型只能加入同一類型的多個元素,標識符<T>,可以看成是一個占位符,泛型是將運行時錯誤提前到了編譯時
6.泛型集合Dictionary<K,V>
Dictionary<string,Person> dic=new Dictionary<string, Person>();
深入.NET平臺和C#編程筆記第三章