我正在尝试使用流编写Java lambda表达式来执行以下代码的操作。给定人员列表和列表DateFilter,从人员列表中删除出生日期与DateFilter列表范围内任何日期相匹配的人员。编写Java谓词以将列表与另一个进行比较
List<Person> people = getPerson();
List<DateFilter> dateFilters = getDateFilters();
List<Person> filteredPersons = new ArrayList<>();
for(Person p : people){
boolean isWithinRange = false;
for(int i = 0; i < dateFilters.size() && !isWithinRange; i++){
DateFilter dateFilter = dateFilters.get(i);
if(numOfDaysBetween(p.getBirthDate(),dateFilter.getDate()) < dateFilter.getDiffRange()){
isWithinRange = true;
}
}
if(!isWithinRange){
filteredPersons.add(p);
}
}
有没有简化的方法来做到这一点?
谢谢
他已经显示了他的代码。它正在工作,但他在问如何简化它。他想用Java 8 streams/lambda重写这段代码。对,@ user1309197? – spirit
@spirit:不,他在没有流的情况下显示他的代码。他还没有表现出他尝试过溪流。 –
是的,也许是因为他不知道该怎么做=)这就是为什么他要求帮助,我猜=)) – spirit