1. 程式人生 > >泛型集合

泛型集合

數量 add time 字典 gen 支持 engines 出現 clr

ArrayList arry = new ArrayList();
arry.Add("小明");
arry.Add("小D");
arry.Add("小B");
arry.Insert(2,"小狗");
arry.Remove("小狗");
arry.RemoveAt(0);
arry[0]="小明哥";
bool ic = arry.Contains("菊花");
if (ic)
{
Console.WriteLine("這是abc");
}
else
{
Console.WriteLine("這是cba");
}
foreach (var item in arry)
{
Console.WriteLine(item);
}

//seF se = new seF();
ArrayList a = new ArrayList()
{
new seF(){name="sb"},
new seF(){name="ccc"},

};
System.Collections命名空間
實例化ArrayList對象。
ArrayList engineers =new ArrayList();
ArrayList engineers =new ArrayList(5);[可以指定長度]
se engineers =(se) engineers [0];

Hashtable添加元素
Hashtable enginess = new Hashtable();
engineers.Add(Key,Value);

集合概述

1.集合:一個動態維護2長度的數組

ArrayList集合

2.可維護動態長度的集合
01.ArrayList:
一個可動態維護長度的集合
02.集合結構
001.下標從0開始
002.元素的類型是Object類型
03.初始化
001.引用System.Collections命名空間,實例化ArraysList對象
002.集合可以指定初始容量,也可以不指定
0001.不指定容量的情況下默認長度為0
3.基本操作
01.Add()
集合名.Add(需要添加的元素)
集合尾部追加元素
*集合中添加值類型的元素時,會執行裝箱處理
02.Insert()
集合名.Insert(下標位置,添加的元素)
集合中插入元素
03.Count
集合名.Count
獲取集合中的元素數量
04.刪除元素
001.Remove(對象名)
語法:ArraysList名.Remove(對象名)
*刪除指定對象名的對象
*沒有相應的對象名是不會出現異常
002.RemoveAt(下標)
語法:ArraysList名.RemoveAt(對象名)
*刪除指定索引的對象
*沒有相應的下標時會出現異常(集合越界)
003.Clear()
語法:ArraysList名.Clear(對象名)
*刪除集合內的所有元素
05.Contains()
語法:集合名.Contains(元素名)
判斷集合中是否有相應的元素,返回布爾類型
4.集合初始化器
01.C#3.0語言的新特性之一
02.由系統元素初始化器構成,包圍在“{”和“}”之間,並使用逗號進行分割
語法:
ArrayList arr = ArrayList()
{
1,5,new SE(){"帥帥",12,"男"}
};
*結尾不使用任何符號,但大括號後需要用英文符號結尾
*在初始化器中可以添加任何類型的元素
5.訪問ArraysList單個元素
語法:
ArraysList(集合名)[index(訪問的下標)]//按指定索引(下標)取得對象
6.訪問ArraysList中所有元素
*使用循環實現

Hashtable

1.集合
01.動態可維護長度
02.可通過關鍵字檢索
2.HashTable通常稱為哈希表
01.根據鍵(Key)可以查詢到相應的值(Value)
*鍵和值一一對應
02.Key值不可重復
3.使用HashTable
01.給HashTable添加元素
HashTable hash = new Hashtable();
Add(Key,Value);
02.獲取HashTable的元素
SE se1 = (SE) hash["key"];//通過key獲取元素(需要類型轉換)
se1.Show();
*沒有找到相應的key是返回一個null
03.刪除HashTable的元素
hash.Remove("key");//通過key刪除元素
*如沒有相應的key,不會出現異常
04.清空HashTable中所有元素
hash.Clear();//清空所有
4.遍歷HashTable
*遍歷HashTable通過foreach循環
01.遍歷鍵和值
foreach(DictionaryEntry ob in hash)
{
Console.WriteLine((stirng)ob);
SE se = (SE)ob;
Console.WriteLine(se.Name);
}
02.遍歷鍵
foreach(Object ob in hash.Keys)
{
Console.WriteLine((string)ob);
}
03.遍歷值
foreach(Object ob in hash.Values)
{
SE se = (SE)ob;
Console.WriteLine(se.Name);
}

泛型和泛型集合

1.使用List<T>(泛型集合)
*<T>尖括號中的參數是集合所能添加的類型
*若添加別的類型的參數會出現異常
2.List<T>基本操作
01.命名空間:System.Collections.Generic;(一般情況下編譯器自動導入)
*基本的操作跟ArrayList相同
3.什麽是泛型集合
01.泛型<T>最常見的用途是創建集合類
02.泛型集合可以約束集合內的元素類型
03.經典泛型集合List<T>、Dictionary<K,V>
*<T>、<K,V>表示該泛型集合中的元素類型
04.泛型集合不會用到裝箱和拆箱
04.List<T>與ArrayList的對比
01.不同點
001.List<T>:添加元素時類型嚴格檢查。而ArrayList:可以增加任何類型
002.List<T>:添加和讀取值類型元素時,無需裝箱拆箱。而ArrayList:添加和讀取值類型元素時,需要裝箱拆箱

Dictionary

1.Dictionary<K,V>通常稱為字典
01.<K,V>約束集合中元素類型
02.編譯時查詢類型約束
03.無需裝箱、拆箱操作
*操作與HashTable操作類似
2.<K,V>
01.在Dictionary中<K,V>是自定義的
02.K:
001.K不能重復
002.K不能為空
003.通過K訪問元素時:如沒有相應的K,系統會報錯
004.通過K刪除元素時:如沒有相應的K,系統不會報錯
3.遍歷Dictionary
01.循環遍歷時跟HashTable相似,不需要進行類型轉換
02.遍歷鍵和值
foreach(KeyValuePair<string,SE> ob in hash)
{
Console.WriteLine((stirng)ob);
SE se = (SE)ob;
Console.WriteLine(se.Name);
}
*遍歷鍵和值時循環類型使用KeyValuePair
*後邊的尖括號中添加相應類型的K,V
4.Dictionary<K,V>與HashTable的對比
1.不同點
001.Dictionary<K,V>:增加元素時類型嚴格檢查。而HashTable:可以增加任何元素
002.Dictionary<K,V>:無序裝箱拆箱。而HashTable:需要裝箱和拆箱
02.相同點
001.通過Key獲得Value
002.添加對象方法相同
003.遍歷方法相似,遍歷鍵和值的時候使用的循環類型不通過

泛型

1.泛型
01.操作的數據類型被定義為一個參數
2.泛型類
public class 類名<T>
{
//......
}
*T指類型參數,代表具體的數據類型,可以是類類型,也可以是基本數據類型
3.泛型的重要性
01.實現代碼重用,未來的主流技術
01.泛型相當於模板,支持所有的類型。使開發者不用為某種類型寫特定的方法
02.性能高,避免繁瑣的裝箱拆箱
03.提供了更好的類型安全性
01.有相應的類型約束,不用進行裝箱拆箱。
04.CLR支持泛型
001.CLR是公共語言運行庫(Common Language Runtime)和Java虛擬機一樣也是一個運行時環境,它負責資源管理(內存分配和垃圾收集等),並保證應用和底層操作系統之間必要的分離。CLR存在兩種不同的翻譯名稱:公共語言運行庫和公共語言運行時。

泛型集合