私は、次のコードが何をしているのかをストリームでJavaラムダ式を書こうとしています。 人物リストと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ストリーム/ lambdaを使ってこのコードを書き換えたいと思っています。そう、@ user1309197? – spirit
@spirit:いいえ、彼はストリームなしで彼のコードを示しました。彼はストリームで彼の試みを示していない。 –
はい、おそらく彼はそれをする方法を知らないので)助けを求めているのですか?)) – spirit