HashMap和LinkedHashMap插入顺序不同的原因

时间:2019-07-08 21:02:10

标签: java hashmap

我了解HashMap的输出根本不会保持任何顺序的恒定输出,尽管有时会保持不变,所以这是我的问题:什么条件会使HashMap以这种有序形式打印其输出? / p>

1 个答案:

答案 0 :(得分:3)

  

什么条件会使HashMap以[插入顺序]打印输出?

标准库HashMap的迭代顺序是确定性的,但是它以难以预测的方式变化。影响该顺序的因素包括地图的初始容量和负载系数,插入和从中删除的键的哈希码(在较小程度上是键的值)以及插入和移除的顺序。

对于给定的一组合理的映射参数和足够灵活的密钥类型,应该可以计算出导致最终地图内容的插入顺序迭代的密钥插入/删除序列,但只有靠运气才能做到期望看到填充有实际数据的HashMap的插入顺序迭代。

例如,我在未测试或未咨询实现的情况下,推测如果您使用Integer键(其哈希码是其int值),则选择了每个键都以单独的哈希存储桶结尾并以升序插入,那么您可能会看到它们以插入顺序进行了迭代。这并不是要成为一个食谱,而只是一种传达可能涉及的考虑因素的机制。

总体而言,如果您关心迭代顺序,请不要选择HashMap。没有好处可言。