为了账号安全,请及时绑定邮箱和手机立即绑定

Hashtable和Dictionary<T,K>的内部排序

Hashtable和Dictionary<T,K>的内部排序

芜湖不芜 2018-12-07 00:45:00
Hashtable和Dictionary<T,K>的内部排序算法不一样,请看代码         Dictionary<string,string> ht=new Dictionary<string, string>();        ht.Add("http://www.sina.com.cn","");        ht.Add("http://www.bjut.edu.cn","");        ht.Add("http://lib.bjut.edu.cn", "");        ht.Add("http://news.bjut.edu.cn", "");        ht.Add("http://sse.bjut.edu.cn", "");        ht.Add("http://lexus.cnblogs.com", "");        ht.Add("http://www.sina.com.cn/sport", "");        ht.Add("http://www.sina.com.cn/ent", "");        foreach(var kvp in ht)            Console.WriteLine(kvp.Key);        Console.WriteLine("============================================");        Hashtable ht2=new Hashtable();        ht2.Add("http://www.sina.com.cn", "");        ht2.Add("http://www.bjut.edu.cn", "");        ht2.Add("http://lib.bjut.edu.cn", "");        ht2.Add("http://news.bjut.edu.cn", "");        ht2.Add("http://sse.bjut.edu.cn", "");        ht2.Add("http://lexus.cnblogs.com", "");        ht2.Add("http://www.sina.com.cn/sport", "");        ht2.Add("http://www.sina.com.cn/ent", "");        foreach(DictionaryEntry i in ht2)            Console.WriteLine(i.Key); 两组实现的代码一样,但是输出的排序结果不一样,这是为什么,我觉得Hashtable的排序应该是比较正常的,大家觉得呢?
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

Dictionary默认没有排序的意思是它将按你Add的顺序来存放,本身不会做排序操作 Hashtable的排序是根据Key的HashCode来进行的,HashCode来自于Key的GetHashCode方法,一般值类型都直接使用系统已经实现的GetHashCode方法,但引用类型多数情况下建议重写GetHashCode()
查看完整回答
反对 回复 2019-01-21
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

两者都相当于无序集合,顺序是无所谓的.
查看完整回答
反对 回复 2019-01-21
  • 3 回答
  • 0 关注
  • 514 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信