在java中我想在一行流中返回映射

0 java inline java-stream

我正在尝试改进我已经可以运行的代码,所以这就是事情,我有一个返回 a 的方法Map

public Map<String, String> extractPartitionsValues(java.nio.file.Path marketFile) {

    Map<String, String> map = new HashMap<>();
    for (String p : this.partitions) {
        map.put(p, partitionValueFromFilePath(p, marketFile.toString()));
    }
    return map;
}
Run Code Online (Sandbox Code Playgroud)

我想使用stream和collectorsToMap在一行中重新运行它,但我真的很菜,所以我阅读了文档和我发现的所有内容,但它仍然不起作用,有人可以帮我解决这个问题吗?

Boh*_*ian 6

使用Collectors.toMap()withidentity()作为键和您对值的计算:

public Map<String, String> extractPartitionsValues(Path marketFile) {
    return partitions.stream()
      .collect(toMap(identity(), p -> partitionValueFromFilePath(p, marketFile.toString())));
}
Run Code Online (Sandbox Code Playgroud)