【C#】之 集合
阿新 • • 發佈:2018-12-08
#一、ArrayList
對於普通的陣列,在宣告時需指定其型別,每一種陣列只能對應一種型別,並且陣列順序需按小到大排序。如果想要隨便的在任意一個數組中放各種型別的資料,並且不確定放多少個,這時就用到了ArrayList集合——動態陣列。
##1、宣告方法
Array List 陣列名 =new ArrayList(); //要先匯入名稱空間 using system.collections.
##2、常用方法
新增資料:
ArrayList.add(資料值); //不是通過下標新增資料,但利用下標可以重新賦值 ArrayList.addrange(陣列名) ; 可直接新增陣列並顯示出來 ArrayList 陣列名 = new ArrayList(建構函式);//通過建構函式的形式在集合中放一個數組並能直接顯示出來
利用下標重新賦值:ArrayList[0]=資料值;
在某一個下標位置插入一個值:ArrayList.insert(i,i+1);
判斷集合中是否包含這個元素:arraylist.contains(i);
清空:ArrayList.clear();
集合中元素的個數:int num =arraylist.count;
##3、舉例
若集合中某個元素存的是陣列或者是一個類,可通過迴圈判定顯示。
int[] nums = new int[] { 1, 3, 4, 4, 5 }; ArrayList arraylist = new ArrayList () ; //宣告集合 //在集合中新增資料 arraylist.Add ("xiaohong"); arraylist.Add(89.256); arraylist.Add(890); arraylist.Add(true); arraylist.Add(3.23m); arraylist.Add(nums);//新增一個數組 person p = new person("小楊", 19, '男');//新增一個類 arraylist.Add(p); arraylist[5] = 12; //改變下標為5的元素的值 //將陣列型別的資料和類顯示出來 for (int i = 0; i < arraylist .Count ; i++) { if (arraylist [i] is int[]) //判斷ArrayList的第i個元素是否能夠轉化成int型別陣列 { int[] numbers = (int[])arraylist[i]; //定義一個int型別的陣列number,賦值為ArrayList集合中第i個元素強制轉換的結果 for (int j = 0; j < numbers .Length ; j++) { Console.WriteLine(numbers[j]); } } else if (arraylist [i ] is person ) //判斷ArrayList的第i個元素是否能夠轉換成 person這個類 { ((person)arraylist[i]).say(); } else { Console.WriteLine(arraylist[i]); } } Console.ReadKey();
#二、List<T>
泛型集合,是為了專門處理某種型別,ArrayList對應的是list<型別名>,在尖括號中寫什麼型別,這個集合就變成了什麼型別的集合。新增資料、插入資料、索引訪問資料都是這個型別的,不用考慮所有的轉化問題。使用時不用匯入名稱空間。
//隨機的往這個list集合中新增十個數字,不能重複,求和,求最大值,最小值平均值 List<int> list = new List<int>(); Random r = new Random(); int num = 0; while (list.Count !=10) { num = r.Next(1, 100); if (!list.Contains(num)) { list.Add(num); } } Console.WriteLine("最大值為{0}最小值為{1}和為{2}平均值為{3}", list.Max(), list.Min(), list.Sum(), list.Average()); Console.ReadKey();
#三、字典 dictionary
儲存資料的另一種形式,與雜湊表很像,存在鍵值對,但在使用時不用匯入名稱空間。
Dictionary<string, string> dic = new Dictionary<string, string>();//使用宣告 dic.Add("老蘇", "鳳姐");
dic.Add("老牛", "芙蓉");
dic.Add("老馬", "春哥");
dic.Add("老虎", "月月");
foreach (var item in dic.Keys )//遍歷字典
{
Console.WriteLine("key----{0},value-----{1}", item, dic[item]);
}
Console.ReadKey();
#四、雜湊表
也就是我們在資料結構導論中所學的雜湊函式,是根據關鍵碼值(Key value)而直接進行訪問的資料結構。它通過把關鍵碼值對映到表中一個位置來訪問記錄,以加快查詢的速度。
##1、要點
1、以鍵值對的形式存在 key ——鍵,value——值,鍵值對均是object型別
2、鍵值對中的鍵就是為了找資料用的,必須提供,不允許重複
3、使用鍵作為尋找方式是一種無序的結構
4、轉換使用裡式轉換原則
5、使用前匯入名稱空間using system.collections
6、儲存的資料不限制什麼型別
##2、foreach迴圈
Hashtable ht = new Hashtable();
ht.Add("老蘇", "1001");
ht.Add("小馬", "1002");
ht.Add("小楊", "1003");
ht.Add("1004", "小趙");
ht.Add(new person("小趙",19,'男'),1005);
foreach (var str in ht.Keys ) //foreach迴圈可以遍歷整個雜湊表 str為對應的鍵,ht.keys為鍵所對應的值
{
Console.WriteLine("key{0},---------value{1}", str, ht[str]);
}
Console.WriteLine("新增成功了");
Console.ReadKey();
#五、幾種集合的區別