【问题标题】:How to place the merged map to the bottom?如何将合并后的地图放在底部?
【发布时间】:2021-11-15 06:19:10
【问题描述】:

合并两张地图后,我注意到在显示合并后的地图时最后一张位于顶部:

Map<Integer, String> dataToSage = new HashMap<Integer, String>();
for(InterventionDTO i : list) {
    Map<Integer, String> data = interfaceSageService.getDataToSendToSAGEFromIntervPlanMP(i.getIdintervention());
    data.forEach((key, value) -> dataToSage.merge(key, value, (oldValue, newValue) -> {
        return newValue;
    }));
}

它给出的输出是:

虽然在数据库中数据是有序的:

那么在合并过程中如何将最后一张合并的地图放在底部呢?

【问题讨论】:

  • 即使是数据库也不是很有序,尽管你认为它是有序的。除非您指定顺序,否则数据库不需要以任何特定顺序返回行。尽管从实际的角度来看,它通常会按顺序输出,但这是由于以正确的顺序插入的实际原因意味着行按该顺序排列在磁盘上,但不能保证并且可以更改。顺便说一句,而不是循环,你可以dataToSage.putAll(data);

标签: java hashmap


【解决方案1】:

在使用HashMap 时,您不应假设任何排序。

如果您需要订购,那么您有两种选择:

  1. 如果您希望根据键的顺序对元素进行排序,则可以使用TreeMap。如果您需要自然排序以外的其他需求,您可以将 Comparator 传递给构造函数。
  2. 如果您希望元素根据插入顺序排序,则可以使用LinkedHashMap

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 2013-07-29
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2010-12-07
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多