当前位置: 首页 > 面试题库 >

如何保持哈希表中元素的顺序

景仲渊
2023-03-14
问题内容

我有一个哈希表。values()方法以与插入顺序不同的顺序返回值。如何获得与插入顺序相同的值?使用LinkedHashmap是一种替代方法,但不同步。


问题答案:

使用LinkedHashMap

接口的哈希表和链表的实现Map,具有可预测的迭代顺序。此实现的不同之处HashMap在于,它维护一个遍历其所有条目的双向链接列表。此链表定义了迭代顺序,通常是将键插入映射中
的顺序insert-order )。请注意,如果将密钥 重新插入 到映射中,则插入顺序不会受到影响。(如果m.put(k, v)在调用 之前立即m.containsKey(k)返回键k,则将其重新插入到映射m中 true。)

结合Collections.synchronizedMap()

因此,例如:

Map<String, String> map = Collections.synchronizedMap(
  new LinkedHashMap<String, String>());


 类似资料:
  • 我有一个需要添加到HashSet的对象列表,例如

  • 问题内容: 我正在尝试创建一个OrderedDict对象,但我不会立即创建它,否则所有元素都会混乱。 这是我的工作: 元素不按我分配的顺序排列 docs.python.org没有示例,我无法弄清楚订单为何变得混乱。任何帮助是极大的赞赏。 问题答案: 您的问题是,您正在构造一个将初始数据提供给的-这 不会 存储任何订单,因此订单在到达之前就丢失了。 解决方案是从有序数据类型构建-最简单的是的: 值得

  • 实质上,我想命名列表的元素。 我可以这样做: 但是如果一个列表中有很多元素,那么这个过程会变得很长。 有没有更短的方法只命名一次散列?或许在此基础上有所变化: 但是使用来自函数<code>listmaker<code>的值?我在想象某种

  • 问题内容: 如何将一个列表拆分为给定数量的列表,按顺序排列元素并将它们分配给子列表(因此不对列表进行分区)? 我想尽可能做到“不错”(使用Java 8功能或Guava或类似功能)。 示例列表: 应该分为3: 应该分成2个: 问题答案: 如果源列表支持有效的随机访问,则可以使用 例如

  • 我试图做一个哈希表与线性探测插入。 表的大小是11,我的散列函数是,h(k)=k mod 11,我想做的是。 插入(15, c)插入(4, a)插入(26, b)删除(15)插入(5, d)插入(4, e) 这是我的解决方案,但它是不对的。 应该是这样的,有人能解释一下为什么吗?

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加