次の式を使用して、誕生日が条件と一致する人のリストをフィルタリングしています。Java 8ストリームフィルタリングから削除された項目のリストをキャプチャする方法はありますか?
List<Person> matchingPeople = people.stream()
.filter(p -> dateFilters.stream()
.anyMatch(df ->
numOfDaysBetween(p.getBirthDate(), df.getDate()) < df.getDiffRange()
)
)
.collect(Collectors.toList());
Collectors.toList()
は、条件を満たす人々のリストを返します。デバッグ/ロギングの目的で削除された人のリストをどのように取得するのかと思います。 1つの可能な方法は、別のフィルタでリストを実行することですが、それは非効率的です。私たちは同じフィルターでそれを行うことはできますか?
いいえ、任意の要素をフィルタしたくない場合は結果をグループ化し、2つの異なる出力リストにまとめることができます。 – midor