小编vik*_*tor的帖子

使用Java 8 Lambda Expression合并Map流

我是lambda表达的新手,并试图在我的任务中使用它.

问题:

我有两个地图m1m2类型Map<Integer, String>,必须合并到一个地图中 Map<Integer, List<String>>,其中两个地图中相同键的值被收集到一个列表中并放入一个新的地图中.

基于我探索的解决方案:

Map<Integer, List<String>> collated = 
                Stream.concat(m1.entrySet().stream(), m2.entrySet().stream()).collect(
                        Collectors.toMap(Entry::getKey,
                                Entry::getValue, (a, b) -> {
                                    List<String> merged = new ArrayList<String>(a);
                                    merged.addAll(b);
                                    return merged;
                                }));
Run Code Online (Sandbox Code Playgroud)

但是,这种解决方案预计源ListMap<Integer, List<String>>如在toMap合并函数需要操作数和结果是相同的类型.

我不想更改源集合.请提供您使用lambda表达式实现此目的的输入.

java lambda java-8 java-stream

15
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

lambda ×1