如何使用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?
谢谢。
答案 0 :(得分:4)
您不需要执行map()
步骤。从List<String>
产生String
的逻辑应该传递给Collectors.toMap()
:
Map<String, List<String>> map =
mySet.stream()
.collect(Collectors.toMap(Function.identity(),
string -> {
// put logic that returns List<String> here
}));
答案 1 :(得分:1)
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));