Dictionary鍵值對集合(字典)
阿新 • • 發佈:2018-12-26
<1>
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Dictionary字典 { class Program { static void Main(string[] args) { //HashTable鍵值對集合的宣告方式: Hashtable ht = new Hashtable(); 宣告的過程中是沒有確定鍵和值的型別的 //Dictionary鍵值對集合與HashTable鍵值對集合有所有不同,Dictionary的鍵和值的型別都已經聲明確定了 Dictionary<int, string> dic = new Dictionary<int, string>(); //建立一個鍵值對集合物件,鍵的型別為int。值的型別為string。 dic.Add(1, "張三"); dic.Add(2, "李四"); //d.Add("張三",28) 錯誤;因為Dictionary<int,string> 已經確定它的鍵只能是int型別,值只能是string型別。 //dic.Add(1, "新的張三");//報錯。key是唯一的。前面已經添加了一個key為1的鍵值對了。 dic[1] = "新的張三"; //這樣就不會報錯了。其實這裡是做了一個判斷。即:如果dic鍵值對裡一個key為1的鍵值對, 那麼就將它的值更新為“新的張三” 。如果沒有key為1的鍵值對。那麼就新增一個key為1 值為“新的張三”的鍵值對 //dic.Clear(); //清空dic這個鍵值對集合的所有元素。 //HashTable鍵值對集合只能有這種方式進行遍歷。即只能遍歷keys. foreach (var item in dic.Keys) //遍歷dic這個鍵值對的所有key { Console.WriteLine(item); //輸出1,2 Console.WriteLine("鍵是:{0}----值是:{1}", item, dic[item]);//輸出:鍵是:1----值是:張三 鍵是:2----值是:李四 } //而Dictionary鍵值對除了用以上方式進行遍歷外,還可以用這種凡是進行遍歷。 foreach (KeyValuePair<int, string> item in dic) //將dic這個鍵值對以 鍵值對(一對一對)的形式來遍歷。 { Console.WriteLine(item); //輸出: [1, 張三] [2, 李四] Console.WriteLine("鍵是:{0}----值是:{1}", item.Key, item.Value);//輸出:鍵是:1----值是:張三 鍵是:2----值是:李四 } //Dictionary鍵值對集合例項:將str這個字串的每個字母做為key,每個字母出現的次數作為值。新增到鍵值對物件中。 string str = "welcome to china"; Dictionary<char, int> dic2 = new Dictionary<char, int>(); int i = 1; foreach (var item in str) //遍歷str這個字串 { if (item == ' ') //如果當前遍歷到的字元為' '就跳過當前迴圈。即:去掉空格 { continue; //跳過當前迴圈,進行下一輪迴圈。 } if (dic2.Keys.Contains(item)) //如果dic2這個鍵值對集合中包含了 key為 item 這個鍵值對 { dic2[item]++; //那麼就將key為item這個鍵值對的值在原有的基礎上自增一次。即+1 } else { dic2.Add(item, 1); //否則就將item 作為key。1作為預設值。新增到dic2這個鍵值對中。 } } foreach (var item in dic2) { Console.WriteLine("字母:{0}----出現的次數為:{1}次", item.Key, item.Value); } Console.ReadKey(); } } }