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()
- 3 回答
- 0 关注
- 514 浏览
添加回答
举报
0/150
提交
取消