我有自己的类CheckIn
,其属性day
为 as String
,workingHours
asint
和inProgress
as boolean
:
public class CheckIn {
public int id;
public String day;
public int workingHours;
public boolean inProgress;
public CheckIn(String day, in hours, boolean inProgress) {
this.day = day;
this.workingHours = hours;
this.inProgress = inProgress;
}
}
我的系统中有条目列表,我需要这些条目的摘要并将它们与天分组并总结工作时间。在这里没问题,我可以使用 lambda 来实现,但是如果条目中的任何内容为真,那么我想将进度设置为真怎么办?
// Suppose this is the inputs
List<CheckIn> checkinsList = new ArrayList<>();
checkinsList.add(new CheckIn("26-11-2015",6,true));
checkinsList.add(new CheckIn("27-11-2015",6,false));
checkinsList.add(new CheckIn("26-11-2015",6,false));
checkinsList.add(new CheckIn("27-11-2015",4,false));
checkinsList.add(new CheckIn("26-11-2015",1,false));
checkinsList.add(new CheckIn("28-11-2015",6,false));
checkinsList.add(new CheckIn("28-11-2015",6,false));
checkinsList.add(new CheckIn("28-11-2015",6,true));
List<CheckIn> summary = new ArrayList<>();
checkinsList.stream().collect(Collectors.groupingBy(Function.identity(),
() -> new TreeMap<>(
Comparator.<CheckIn, String>comparing(entry -> entry.day)),
Collectors.summingInt(entry -> entry.duration))).forEach((e, sumTargetDuration) -> {
CheckIn entry = new CheckIn();
entry.day = e.day;
entry.duration = sumTargetDuration;
// Here my something like what I need?
entry.inProgress = e.inProgress;
summary.add(entry);
});
我需要summary
列表包含(在这种情况下用于输入)在这 3 天内有 3 个项目:
我想要这样的结果:
- 第一项
"26-11-2015" , 13 , true
<--true
因为“2015 年 26 月 11 日”有 1 项为真。 - 第二项
"27-11-2015" , 10 , false
- 第三项
"28-11-2015" , 18 , true
inProgress
如果那天有任何条目,我希望摘要为真,inProgress == true
它是否适用于 lambda?