如何在 HashMap 中保留插入顺序? [复制]
Posted
技术标签:
【中文标题】如何在 HashMap 中保留插入顺序? [复制]【英文标题】:How to preserve insertion order in HashMap? [duplicate] 【发布时间】:2022-01-21 13:43:30 【问题描述】:我正在使用HashMap
。当我遍历地图时,数据以(通常相同的)随机顺序返回。但是数据是按特定顺序插入的,我需要保留插入顺序。我该怎么做?
【问题讨论】:
docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html 【参考方案1】:LinkedHashMap
正是您要找的。p>
它与HashMap
完全一样,只是当您对其进行迭代时,它会按插入顺序显示项目。
【讨论】:
根据 java doc 它说:这个链表定义了迭代顺序,这通常是键被插入到映射中的顺序。¿¿¿¿¿ 通常 ???????这是什么意思?订单插入不保证.... @Xenione:您可以在插入顺序和访问顺序之间进行选择。查看bit.ly/1jZXlCl的最后一个参数 @Xenione [请注意,如果将键重新插入到地图中,插入顺序不会受到影响],当一个键被放置两次时,第二次放置不会改变顺序,因此迭代顺序不会由于键的唯一性,正是插入顺序;通常意味着如果键是唯一的 构造函数给出一个“插入顺序” Map,但构造函数(int,float,boolean),如果第三个参数为真,则允许创建“访问顺序”LinkedHashMap 在这种情况下,get 的调用会影响顺序, 顺序是访问最少的优先 这使得使用java.util.Comparator<T>
和 java.util.Collections.sort()
明确不必要,感谢您提供非常有用的信息。【参考方案2】:
HashMap
在文档的第二行中是无序的:
这个类不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。
也许您可以按照 aix 的建议使用 LinkedHashMap
或其他有序集合。在Choosing the right Collection 上查看 javapractices.com 的指南。
【讨论】:
以上是关于如何在 HashMap 中保留插入顺序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章