如果我有A级课程
public class A {
String name;
String value;
}
我有一个要转换为Map<String, Set<String>>
的Set,它使用流类将A.name映射到A.value的集合,因为许多A实例将共享相同的名称String,但没有一个共享相同的字符串值。有办法吗?
答案 0 :(得分:2)
要创建将Map<String, Set<String>>
映射到一组A.name
的{{1}},您需要使用以下方法:
groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
mapping(Function<? super T,? extends U> mapper, Collector<? super U,A,R> downstream)
A.value
尽管可以使用lambda表达式代替,例如,代码使用方法引用来引用Map<String, Set<String>> map = set.stream()
.collect(Collectors.groupingBy(A::getName,
Collectors.mapping(A::getValue,
Collectors.toSet())));
类上的getter方法。 A
可以替换为A::getName
。
答案 1 :(得分:0)
您可以在转换之前实例化一个空的Map,然后转换将使用匿名函数来收集,该函数将检查该map以查看是否应放置新的set或更新现有的set。