HashTable 能够不排序吗﹖

Frank6600 2007-03-23 02:42:23
HT 为 HashTable

我使用 HT.Add(Key, Value) 来添加值对,
当我把它取出来时,
发现Key自动排序了。

能够不让它排序吗﹖
我希望保持原本 Add 的顺序。

如果 HashTable 一定会排序,
那么我不要排序的话得改用哪个组件﹖
...全文
717 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank6600 2007-03-23
  • 打赏
  • 举报
回复
好的,多谢以上诸位。
要结帖了。
Red_angelX 2007-03-23
  • 打赏
  • 举报
回复
构造一个Key-Value结构用List<>存
北京的雾霾天 2007-03-23
  • 打赏
  • 举报
回复
对你要保证按你的Add顺序,你最好换用ArrayList,或用List<T>.
Frank6600 2007-03-23
  • 打赏
  • 举报
回复
或许是我搞错了,
HashTable 不是自动排序,
而是「以它自己方便的方式」排列,
即,它会打乱我原本Add的顺序。

看来我得换另一个适用的组件,
或者与 Arraylist 一起使用。
即ArrayList保存顺序,
HashTable保存值对,
取出时同时参考两者。

目前只想到这个方法。
vrhero 2007-03-23
  • 打赏
  • 举报
回复
.NET 2.0 以上版本,HashTable 已过时,改用 Dictionary 泛型,如果需要排序可用 SortedDictionary 泛型...
北京的雾霾天 2007-03-23
  • 打赏
  • 举报
回复
HashTable会自动排序吗?

那还要SortList做什么?
shadowno 2007-03-23
  • 打赏
  • 举报
回复
arraylist
hashtable
sortedlist

这3个集合对象,功能依次增强,系统开销也依次增大。hashtable 应该是不支持排序的,他有个唯一键值也是为了提高查询速度。

arraylist 是不是合适你用?
Frank6600 2007-03-23
  • 打赏
  • 举报
回复
> 哈希表内部按照Hashcode来排序的。我们无法让哈希表排序,可以借ArrayList来用。
> ArrayList arr = new ArrayList(hash.Keys);
> arr.Sort();

你误解了,我「不」要排序。
yumanqing 2007-03-23
  • 打赏
  • 举报
回复
因为Hashtable用了hash算法,所以表里的数据顺序是不定的,最好不要用它来解决这样的问题
建议用数组
Frank6600 2007-03-23
  • 打赏
  • 举报
回复
对了,忘了说明我取出数据的方法了:
(也许是因为我取出数据方法有误导致排序)

我使用 Enum=DC.GetEnumerator 取得 IDictionaryEnumerator 接口,
然后再以 Enum.MoveNext 循序取出数据

是不是我取出数据的方法错了﹖
如果是,
正确的不排序地取出数据方法是什么﹖
kkk_visual 2007-03-23
  • 打赏
  • 举报
回复
哈希表内部按照Hashcode来排序的。我们无法让哈希表排序,可以借ArrayList来用。
ArrayList arr = new ArrayList(hash.Keys);
arr.Sort();

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧