我正在努力改进我的代码,它已经可以工作了,所以我有一个方法返回一个 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;
}
我想用stream和collectorstomap在一行中重新运行这个,但我真的不知道,所以我读了doc和我找到的所有内容,但它仍然不起作用,有人能帮我吗。
3条答案
按热度按时间nbewdwxp1#
使用
Collectors.toMap()
具有identity()
对于键和值的计算:i5desfxk2#
这应该起作用:
ulmd4ohb3#
这里的要点是从
partitions
领域如果
partitions
定义为字符串数组,Arrays.stream
应使用:Arrays.stream(this.partitions)
.否则,如果
partitions
是字符串的集合(集合或列表),它有自己的方法stream() / parallelStream()
.接下来,为了使用
Collectors.toMap
最简单的形式是partitions
字段应仅包含唯一值。这可以通过应用.distinct()
对流的操作,如果partitions
定义为数组或列表。因此,结果函数可能如下所示:
private String[] partitions;
:还是超载
toMap
使用合并功能可以处理可能的密钥复制: