java希望通过按属性对其他对象列表进行分组来创建一个新列表
要通过按属性对其他对象列表进行分组来创建列表吗 代码如下:
public class MyDate {
public static void main(String[] args) {
List<Data> list = new ArrayList<>();
list.add(new Data("NEW",todayDate,todayDatePlus1,"N"));
list.add(new Data("AUTORIZED",todayDate,todayDatePlus1,"Y"));
list.add(new Data("AUTORIZED",todayDatePlus1,todayDatePlus3,"Y"));
list.add(new Data("AUTHENTICATE",todayDate,todayDatePlus1,"Y"));
list.add(new Data("AUTHENTICATE",todayDatePlus1,todayDatePlus2,"Y"));
list.add(new Data("COMPLETED",todayDate,todayDatePlus1,"N"));
}
}
@Getter
@Setter
class Data{
String phase;
LocalDate startDate;
LocalDate endDate;
String required;
Data(String phase, LocalDate startDate, LocalDate endDate, String required) {
this.phase = phase;
this.startDate = startDate;
this.endDate = endDate;
this.required = required;
}
}
输出:
In New List
("NEW",todayDate,todayDatePlus1,"N")
**("AUTORIZED",todayDate,todayDatePlus3,"Y")**
**("AUTHENTICATE",todayDate,todayDatePlus2,"Y")**
("COMPLETED",todayDate,todayDatePlus1,"N")
在新列表中,重复属性阶段组合为1,并且开始日期和结束日期也会更新。(开始日期最早,结束日期为最后一个)
# 1 楼答案
你可以使用收集器。使用
mergefunction
映射,合并具有相同phase
的Data
对象的值