如何解决Java中Map<A,List<B>>转Map<A,Set<B>>的Stream代码编译报错问题
代码问题说明
你的代码一共存在2处直接导致编译报错的问题:
- 缺少返回语句:方法声明了
Map<A, Set<B>>类型的返回值,但你没有将Stream收集得到的结果返回,仅执行了处理逻辑没有返回值。 SimpleImmutableEntry使用原始类型:创建对象时没有指定泛型参数,导致泛型类型丢失,编译器无法推断收集结果的类型和方法返回值匹配。
修正后的代码
import java.util.AbstractMap.SimpleImmutableEntry; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; Map<A, Set<B>> convert(Map<A, List<B>> original){ return original.entrySet().stream() .map(entry -> new SimpleImmutableEntry<>(entry.getKey(), new HashSet<>(entry.getValue()))) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); }
内容的提问来源于stack exchange,提问作者user93796
相关产品推荐
相关产品推荐

