1. 程式人生 > >Dictionary鍵值對集合(字典)

Dictionary鍵值對集合(字典)

<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();
        }
    }
}