如何保持哈希表中元素的顺序
我有一个哈希表。 Values() 方法以与插入顺序不同的顺序返回值。如何以与插入顺序相同的顺序获取值?使用 LinkedHashmap 是一种替代方法,但它不同步。
I have a hashtable . values() method returns values in some order different from the order in which i am inserted.How can i get the values in the same order as i inserted?Using LinkedHashmap is an alternative but it is not synchronized.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用
LinkedHashMap
。与
Collections.synchronizedMap()
。因此,例如:
Use a
LinkedHashMap
.combined with
Collections.synchronizedMap()
.So, for example:
您可以包装
LinkedHashMap
并同步,也可以使用Collections.synchronizedMap
实用程序创建同步的LinkedHashMap
:来自 JavaDoc:
You could either wrap a
LinkedHashMap
and synchronize or you could use theCollections.synchronizedMap
utility to create a synchronizedLinkedHashMap
:From the JavaDoc:
我非常确定哈希表未排序的原因是为了提高存储和检索速度。因此,我建议使用外部结构来维护排序,并仅使用哈希表来存储值(用于快速查找)。
I'm pretty sure that the reason hashtables are unsorted is to aid storage and retrieval speed. Because of this I would suggest using an external structure to maintain ordering and just using the hashtable for storing values (for fast lookup).
哈希表本质上是无序的,因此您使用了错误的数据结构。由于您没有指定您使用的语言,我无法建议替代语言,但您需要某种类型的有序键/值集。
A hash table is inherently unordered, so you are using the wrong data structure. Since you don't specify what language you are using I cannot suggest an alternate, but you need some type of ordered key/value set.
如果jdk1.6你只有两种类型的有序映射EnumMap和LinkedHashMap。两者不同步。如果您只需要记住顺序,请使用
如果您想排序然后使用 ConcurrentSkipListMap
If jdk1.6 you have only two type of ordered map EnumMap and LinkedHashMap. Both of them are not synchronized. If you just need to remember the order, use
if you want sorted then use ConcurrentSkipListMap