Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 收集器toMap()-从Map.Entry到Map结构的值映射器_Java_Java 11_Collectors - Fatal编程技术网

Java 收集器toMap()-从Map.Entry到Map结构的值映射器

Java 收集器toMap()-从Map.Entry到Map结构的值映射器,java,java-11,collectors,Java,Java 11,Collectors,我最近偶然发现了以下问题 基本上我有一组对,我想把它们转换成一张地图。下面是代码片段: Set<Map.Entry<String,String> > testSet = new HashSet<>( Arrays.asList( entry("key1","value1"), entry("key1","value1")

我最近偶然发现了以下问题

基本上我有一组对,我想把它们转换成一张地图。下面是代码片段:

Set<Map.Entry<String,String> > testSet = new HashSet<>(
            Arrays.asList(
                    entry("key1","value1"),
                    entry("key1","value1")
                    )
    );

    Map<String,Map<String,String>> testMap = testSet
            .stream()
            .collect(
                    Collectors.toMap(
                            entry -> entry.getKey(),
                            entry-> {
                                Map.ofEntries(
                                        entry(entry.getKey(),entry.getValue() + "2")
                                );
                            }
                    )
            );
Set testSet=new HashSet(
Arrays.asList(
条目(“键1”、“值1”),
输入(“键1”、“值1”)
)
);
Map testMap=testSet
.stream()
.收集(
汤姆(
entry->entry.getKey(),
条目->{
入口地图(
条目(entry.getKey(),entry.getValue()+“2”)
);
}
)
);
上面的代码段没有编译,因为传递给toMap的函数需要对象而不是Map.Entry对象,因此编译器找不到特定于Map.Entry的方法

我不知道为什么会发生这种情况,因此非常感谢您的帮助。

应该是:

Map<String,Map<String,String>> testMap = testSet
        .stream()
        .collect(
                Collectors.toMap(
                        entry -> entry.getKey(),
                        entry -> Map.ofEntries(entry(entry.getKey(),entry.getValue() + "2"))
                )
        );
Map testMap=testSet
.stream()
.收集(
汤姆(
entry->entry.getKey(),
entry->Map.ofEntries(entry(entry.getKey(),entry.getValue()+“2”))
)
);
使用带有大括号的lambda表达式体时,它必须包含一个return语句(假设相应函数接口的方法具有返回值)


如果lambda表达式的主体只是一个表达式,则不必用大括号括起来。

在值映射中删除大括号
{}
可能重复,但作为旁注,
Map.ofEntries(Map.entry(a,b))
Map.of(a,b)
的详细版本。