[英]Set of String with Stream to HashMap in Java 8
如何使用Stream创建字符串的字符串和字符串列表的HashMap?
Set<String> mySet;
Map<String, List<String>> = mySet.stream().map(string -> {
// string will be my key
// I have here codes that return List<String>
// what to return here?
}).collect(Collectors.toMap(.....)); // what codes needed here?
谢谢。
您不需要map()
步骤。 从String
生成List<String>
的逻辑应该传递给Collectors.toMap()
:
Map<String, List<String>> map =
mySet.stream()
.collect(Collectors.toMap(Function.identity(),
string -> {
// put logic that returns List<String> here
}));
这里的map
操作没用,因为你不想更改字符串本身,或者你必须将它map
到Entry<String, List<String>>
然后收集它们,但这并不容易。
相反,只需构建地图,将字符串作为键,并将codes
作为值:
Map<String, List<String>> map =
mySet.stream().collect(Collectors.toMap(str->str, str-> getCodesFromStr(str));
如果你想知道,如何使用map
操作并使用Entry
(一对):
Map<String, List<String>> = mySet.stream().map(str->
new AbstractMap.SimpleEntry<String,List<String>>(str, getCodesFromStr(str))
).collect(Collectors.toMap(Entry::getKey, Entry::getValue));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.