集合(2)——Dictionary字典(1)——Dictionary(字典)→ Hashtable等集合类

一、Dictionary(字典)→ Hashtable

1、Key-value Pair 键值对。成语不可以重复,但是解释可以重复。

2、Dictionary<K,V>:     K即Key是键,V即value是值。

(1)Add:添加,如果重复,则报错。

(2)索引器方式设置值:可以重复设置,即使不存在也没关系,如果重复则新数据覆盖旧数据

(3)ContainsKey,判断是否存在这个Key

 

3、(常考)Dictionary<K,V>的非泛型对应的是Hashtable;List<T>——>ArrayList

4、Hashtable和Dictionary的关系,类似于ArrayList和List的关系

(1)List是一个泛型的ArrayList。Dictionary可以看作是一个泛型的Hashtable

(2)Hashtable很少用,所以只要掌握了Dictionary就差不多可以了。

 

5、举个例子:

 string s = "Welcome to Chinaworld";
            Dictionary<char, int> dict = new Dictionary<char, int>();//key为字符,value为出现的次数
            foreach (char ch in s.ToLower())
            {
                if (dict.ContainsKey(ch))//如果dict中含有这个字符就在出现次数上增加1
                {
                    //dict[ch]++;
                    dict[ch] = dict[ch] + 1;
                }
                else
                {
                    dict[ch] = 1;//如果不存在就初始化为1
                }
            }
            foreach (char ch in dict.Keys)
            {
                Console.WriteLine("{0}出现{1}次",ch,dict[ch]);
            }

二、Dictionary揭秘

6、ASP.NET 程序员天天要打交道的 Application、Cache、Session、Request.Params等均由 Dictionary /Hashtable 实现。数据库中的索引也是相似的原理。

7、Dictionary为什么速度这么快

8、查字典为什么能这么快?目录中记录了每个汉字的页码,查找的时候先看汉字的页码,再翻到指定的页就可以非常快速的找到词条了。

9、Dictionary中有一个存储键值对的区域,采用一个固定算法(散列算法,非常快,可以认为时间复杂度为O(1) )根据key来计算这个kvp存放的地址,计算key的值的键值对应该存储的地址,将键值对放入指定的地址即可。查找的时候首先计算key的地址,就可以找到数据了。根据key找房间号,而不是逐个房间找

三、其他集合类

10、HashSet<T>:不能盛放重复的数据重复的数据只保留一份。Add(T value)添加元素;Contains(T value)判断是否存在元素HashSet使用了和Dictionary类似的算法,因此Contains方法效率非常高,时间复杂度为O(1)

11、面试题:取出整数数组中不重复数据的个数,{30,31,99,38,31,99,50}。

12、面试题:现有1~10共10个整数,已随机放入一个有8个元素的数组a[8]。要求找出没有被放入数组的那2个数。注意:程序不用实现自然数随机放入数组的过程,测试数据{9,8,5,3,1,10,2,7}。

13、Stack<T>,栈,先入后出,Push(压栈)、Pop(出栈)。

14、Queue<T>,队列,先入先出:Enqueue(入队)、Dequeue(出队)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值