我最近开始使用Java 8及其Stream API,最近收集了它的Collectors API,我发现它有可能进行许多转换流,但我有一种情况我不确定是否可能用java 8甚至可能 . 我有两节课:
public class ClassA{
public int group
public int id
public String title
public String description
public String keyword
public String specialValue
}
public class ClassB{
public String newTitle
public String joinedDescriptions
}
我想知道是否可以从ClassA对象列表中生成一个ClassB对象的分组列表,其中包含从ClassA的字段计算的值 . 具体来说:
-
通过group和id的组合对ClassA进行分组
-
当关键字= 1时,分组的ClassB实例将具有newTitle = title,或者当keyword = 2时,newTitle = specialValue
-
最后加入了描述,是来自分组的ClassA实例的所有描述的串联 .
我知道可以使用Collectors的groupingBy使用排序classA的lambda - > String.valueOf(classA.group)String.valueOf(classA.id)或类似的方法对ClassA实例进行分组,但我不知道实现每个分组实例的其他计算值 .
我希望它解释得很好 .
1 回答
以下是要采取的步骤;类似于@Joakim Danielson在评论中提到的:
如您在帖子中提到的那样对源列表进行分组,然后在
ClassB
中添加一个构造函数,该构造函数获取ClassA
的列表,然后在设置 Headers 和加入描述方面执行您提到的逻辑:所以这将是你的流管道:
你需要在ClassB中定义一个构造函数: