首页 > 代码库 > Dictionary<T,T>键值对集合(字典)

Dictionary<T,T>键值对集合(字典)

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


Dictionary<T,T>键值对集合(字典)