How to preserve insertion order in HashMap?
我用的是HashMap。当我遍历映射时,数据以随机顺序返回(通常是相同的)。但是数据是按特定的顺序插入的,我需要保留插入顺序。我该怎么做?
- docs.oracle.com JavaSE / 7 /文档/ / / / / linkedhashmap.ht利用Java API zwnj &;& # 8203;毫升
LinkedHashMap正是你要找的。
它与HashMap完全相同,只是当您迭代它时,它以插入顺序显示项目。
- 根据JavaDoc,它说:这个链表定义了迭代排序,这通常是键插入到映射中的顺序。& 191;和γ191;和191;??????这是什么意思?订单插入不是garantee….
- @Xenoine:您可以在插入顺序和访问顺序之间进行选择。参见bit.ly/1jzxlcl的最后一个参数
- @Xenoine[注意,如果一个键被重新插入到映射中,插入顺序不受影响],当一个键被放置两次时,第二个放置不会更改顺序,因此由于键的唯一性,迭代顺序不完全是插入顺序;通常是指如果键是唯一的
- 构造函数给出一个"insert order"映射,但构造函数(int、float、boolean)如果第三个参数为true,则允许创建"access order"linkedhashmap在这种情况下,get的调用将影响顺序,则首先访问的顺序最少。
- 这使得使用java.util.Comparator和java.util.Collections.sort()显式地不必要,并感谢您提供非常有用的信息。
- 速度也更快,谢谢
HashMap未按文件第二行排序:
This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
也许您可以按照AIX的建议进行操作,并使用LinkedHashMap或另一个有序集合。此链接可以帮助您找到要使用的最合适的集合。