首页 > 解决方案 > 根据第二个地图中键的顺序对地图进行排序

问题描述

我有 2 个LinkedHashMaps<String, SomeList>,Map1Map2两个地图中的键是相同的,但顺序可以不同。

例子:

地图1:

Hello, Value1
How, Value2
Are, Value3
You, Value4

地图2:

Hello, Value1
You, Value4
Are, Value3
How, Value2

我想按键对 Map2 进行排序,使其顺序与 Map1 相同。

我正在寻找的结果:

地图2:

Hello, Value1
How, Value2
Are, Value3
You, Value4

标签: java

解决方案


只需LinkedHashMap通过迭代 的键map1并为每个键获取对应的值来创建一个新的map2

Map<String,String> sorted =
    map1.keySet()
        .stream()
        .collect(Collectors.toMap(Function.identity(),
                                  map2::get,
                                  (v1,v2)->v1,
                                  LinkedHashMap::new));

推荐阅读