【发布时间】: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 声明“此类不保证映射的顺序;特别是,它不保证顺序会随着时间的推移保持不变。”
标签: java dictionary