我正在嘗試使用流編寫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