我想将
Map<String,Set<String>>
转换为 Map<String, Set<Object1>>
class Object1 {
String name;
}
我尝试过这种方法,但没有成功。
Map<String, Set<Object>> result = map.entrySet().parallelStream()
.collect(
Collectors.groupingBy(x -> x.getKey(),
Collectors.mapping(x -> (Set<Object1>)Object1.builder().name(x.getValue()), Collectors.toSet())));
你快明白了。但是您可以将名称字段构造函数添加到您的 Object1 并尝试此代码
map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey,
entry -> entry.getValue().stream()
.map(Object1::new)
.collect(Collectors.toSet())));
这可以在
toMap
收集器的帮助下非常简单地完成:
Map<String, Set<Object1>> newMap = map.entrySet()
.stream() // or parallelStream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e -> e.getValue()
.stream()
.map(s -> Object1.builder().name(s).build())
.collect(Collectors.toSet())
));