如何使用Java流将一组对象转换为该对象的字段映射到一组字段?

时间:2019-07-01 21:46:31

标签: java java-stream

如果我有A级课程

public class A {
   String name;

   String value;
}

我有一个要转换为Map<String, Set<String>>的Set,它使用流类将A.name映射到A.value的集合,因为许多A实例将共享相同的名称String,但没有一个共享相同的字符串值。有办法吗?

2 个答案:

答案 0 :(得分:2)

要创建将Map<String, Set<String>>映射到一组A.name的{​​{1}},您需要使用以下方法:

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。