<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(); } } }
时间: 2024-12-19 20:22:04