[英]How should I use streams in this situation
我是在java
使用stream
新手,想知道是否存在优化此代码的方法。 在这种情况下我什么时候应该使用map
或过滤器我很困惑
public Active get(List<Person> personList){
Active a = null;
for(Person person:personList){
if(person.getActives() != null && !person.getActives().isEmpty()){
for(Active active: person.getActives()){
if(active.getStatus().equals(SOME_VALUE)){
if (a == null || a.getDueDate().isAfter(active.getDueDate())) {
a = active;
}
}
}
}
}
return a;
}
Active a = personList.stream()
.filter(person -> person.getActives() != null && !person.getActives().isEmpty()
.flatMap(person -> person.getActivities())
.filter(activity -> active.getStatus().equals(SOME_VALUE))
.reduce(null, (pos_a, activity) ->
(pos_a == null || a.getDueDate().isAfter(active.getDueDate()))? activity: pos_a)
return a;
这将获得所有拥有活动的人员,流式传输所有活动(flatMap)并根据其状态过滤它们,然后减少列表保留最旧的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.