【问题标题】: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&lt;Range, Integer&gt;。它可能比传统答案“使用LinkedHashMap 在迭代时保持插入顺序”更适合您的需求。
  • HashMap 的 javadoc 声明“此类不保证映射的顺序;特别是,它不保证顺序会随着时间的推移保持不变。”

标签: java dictionary


【解决方案1】:

如果您希望保持键的顺序,您应该使用LinkedHashMap,默认情况下,它会根据键的插入顺序对其进行迭代。

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 2013-10-10
    • 2018-06-16
    • 2020-01-06
    • 2020-06-09
    • 2011-02-27
    • 2011-12-18
    • 2011-03-29
    相关资源
    最近更新 更多