Java 转换地图<String,Set<String>> 到地图<String, Set<Object1>> [关闭]

问题描述 投票:0回答:2

我想将

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())));
java dictionary java-stream
2个回答
1
投票

你快明白了。但是您可以将名称字段构造函数添加到您的 Object1 并尝试此代码

map.entrySet().stream()
                .collect(Collectors.toMap(Map.Entry::getKey, 
                        entry -> entry.getValue().stream()
                                .map(Object1::new)
                                .collect(Collectors.toSet())));

0
投票

这可以在

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())
    ));
© www.soinside.com 2019 - 2024. All rights reserved.