集合、泛型集合、字典、雜湊表 總結
一:ArrayList集合
1. 必須宣告名稱空間 usingsystem.collection
2. 可用與儲存不同型別的資料
3. 讀取資料時大都需要里氏轉換
4. 常用方法
Add:新增資料
Insert:插入資料
Remove:刪除索引對應的資料
Removerage:(index,length)從某個索引開始,移除長度為length的資料
Clear:清除集合,此時集合中不再有元素
Sort:排序
Reverse:反轉
Count:集合的長度
【注意】
add():新增資料,如何新增的是個陣列,則陣列會作為一個元素新增到集合中
AddRange():如果新增的是個陣列,則集合會新增與陣列相同個數的元素
6.可以初始化容量,但實際新增數值時,可以超出這個範圍
7.程式碼演示:
class Program { static void Main(string[] args) { Person p=new Person("小王"); int[]num=new int[]{1,2,3,4,5}; ArrayList myAL=new ArrayList(); myAL.Add(1); //新增int型別 myAL.Add(2); myAL.Add("世界");//新增string型別 myAL.Add(p); //新增類 myAL.AddRange(num);//新增陣列 myAL.Insert(3, "漂亮");//在索引3的前面加資料 myAL.Remove(1);//從集合中移除指定物件1在集合中的第一個匹配項 myAL.RemoveRange(1, 3);//從索引為1的位置開始,刪除3個數據 foreach(object value in myAL) { Console.WriteLine(value); } //myAL.Clear(); Console.WriteLine("集合中元素的個數為{0}",myAL.Count); Console.Read(); } } public class Person { private string name; public Person(string name) { this.name=name; } }
二:List泛型集合
1.不需要匯入名稱空間
2.儲存相同指定型別的資料
3.常用方法
方法和ArrayList集合的方法大致相同,但下面是List獨有的方法:
如果資料型別是int型別,可直接呼叫List本身具有的方法求最大值馬max()、最小值min(),和sum()、平均值
4.程式碼演示:
int[]num=new int[]{1,2,3,4,5}; List<int> mylist = new List<int>(); foreach(int n in num) { mylist.Add(n); } Console.WriteLine("最大值為{0}",mylist.Max()); Console.WriteLine("最小值為{0}",mylist.Min()); Console.WriteLine("和為{0}",mylist.Sum()); Console.WriteLine("平均值為{0}",mylist.Average()); Console.Read();
三:雜湊表
1.使用前必須匯入名稱空間 using system.collections
2.鍵和值的資料型別不受限制
3.以鍵值對的形式儲存,讀時也是以鍵值對的形式讀,key不能相同,key儲存時也是無序的,
4.常用方法
Add(key,value):以鍵值對的形式新增
Remove(key):移除對應鍵的value
contains():判斷是否存在該鍵
5.雜湊表常用來幹什麼那,文字轉換,下面是簡繁體字轉換class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); //新增的資料型別無限制 ht.Add(1,"世界"); ht.Add(2, "地球"); ht.Add("one",1); ht.Add("two",2); ht.Add(new Person("小劉"),"帥氣"); ht.Remove("one");//移除對應鍵的值 bool result=ht.Contains("one");//判斷雜湊表中是否有指定的鍵 Console.WriteLine(result); //顯示的順序不一定是你寫入的順序 foreach (object myht in ht.Values) { Console.WriteLine(myht); } Console.Read(); } } class Person { private string name; public Person(string name) { this.name = name; } }
class Program { //簡體字 private const String Jian = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安"; //繁體字 private const String HXW = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨咹"; static void Main(string[] args) { //文章 //string text = "傳智播客有個帥哥叫小楊,小楊很帥,很純潔,是個著名的大帥哥。帥到什麼程度呢,他每次講課,總是引起一堆懷春少女或者半老徐娘的圍觀,搞得網路不暢通。後來他都不敢講公開課了。後來就偷偷的在程式碼教育的論壇註冊個號碼講公開課,可是一旦被發現,也是引來尖叫一片。那些女性朋友們覺得只是尖叫難以吸引小楊的注意,就想了一個辦法——一天二十四小時的加小楊的QQ"; string text = "世界這麼大,幸好還有你,愛看看"; Hashtable ht = new Hashtable(); //將簡體字新增到雜湊表中 for (int i = 0; i < text.Length;i++ ) { ht.Add(Jian[i],HXW[i]); } //將簡體字轉換成繁體字 for(int i=0;i<text.Length;i++) { if (ht.ContainsKey(text[i])) { Console.Write(ht[text[i]]); } else { Console.Write(text[i]); } } Console.Read(); } }
四:Dictory字典
1.不用匯入名稱空間
2.鍵的儲存順序是無序的
3.鍵和值的資料型別固定,需要自己指定
4.常用方法:
方法和HashTable一樣,
5.程式碼演示
【總結】//鍵的型別為int,值的型別為string Dictionary<int, string> d = new Dictionary<int, string>(); d.Add(1,"世界"); d.Add(2,"真大"); foreach (object myd in d.Values) { Console.Write(myd); } Console.Read();
1.ArrayList和HashTable使用前都需要匯入名稱空間,List和Dictionary不需匯入名稱空間
2.都可用foreach迴圈,但用foreach迴圈,一旦開始迴圈,就無法停止了
3.方法都差不多,但List特有max,min,sum,average方法,不用自己在寫程式碼去求了