为啥map.put不维护键的顺序[重复]
Posted
技术标签:
【中文标题】为啥map.put不维护键的顺序[重复]【英文标题】:Why is map.put not maintaining the ordering of keys [duplicate]为什么map.put不维护键的顺序[重复] 【发布时间】:2015-04-28 23:45:03 【问题描述】:我已经定义了一个字典:
Map<String, Integer>
然后在代码中,我将条目添加到集合中:
map.put("> 80", // some stream() + lambda based logic for calculating the value part);
map.put("60 - 80", ....);
map.put("40 - 60", ....);
map.put("20 - 40", ....);
map.put(" < 40", ....);
稍后在调试模式下,我看到键的顺序发生了变化。例如“20 -40”在前,“60-80”在后。为什么键的顺序会改变?如何维护集合中键的顺序。
【问题讨论】:
HashMap 不保证键的顺序。如果要保持输入的顺序,请使用 LinkedHashMap 你可能想创建一个新类,比如说Range
,它是可比较的,并有一个TreeMap<Range, Integer>
。它可能比传统答案“使用LinkedHashMap
在迭代时保持插入顺序”更适合您的需求。
HashMap 的 javadoc 声明“此类不保证映射的顺序;特别是,它不保证顺序会随着时间的推移保持不变。”
【参考方案1】:
如果您希望保持键的顺序,您应该使用LinkedHashMap
,默认情况下,它会根据键的插入顺序对其进行迭代。
【讨论】:
以上是关于为啥map.put不维护键的顺序[重复]的主要内容,如果未能解决你的问题,请参考以下文章