我有一个lambda
当前通过使用1st
返回RecordNumber
行,其中日期匹配传递的日期。
ProList 1
RecordNumber 1
ProEffectiveDate NULL
ProList 2
RecordNumber 2
ProEffectiveDate 2019-03-01
ProList 3
RecordNumber 3
ProEffectiveDate 2019-03-01
这是我当前的代码:
Predicate<ProList> filteredRow =
it->it.getProEffectiveDate()!=null &&
it.getProEffectiveDate().equals(passedInDate);
final ProList minFilteredRow = ProList()
.stream()
.filter(filteredRow)
.min(Comparator.comparing(ProList::getRecordNumber))
.orElse(null);
现在,我必须为
ProEffectiveDate
为null添加功能,以简单地从列表中返回第一行。当
ProEffectiveDate
为null时,如何忽略此过滤器? 最佳答案
看来您需要的逻辑似乎是检查ProEffectiveDate
是否为null
只是返回列表的第一个元素,因此您可以执行以下检查:
ProList minFilteredRow;
if (proLists.stream().anyMatch(a -> a.getProEffectiveDate() == null)) {
minFilteredRow = proLists.get(0);
} else {
minFilteredRow = proLists.stream()
.filter(filteredRow)
.min(Comparator.comparing(ProList::getRecordNumber))
.orElse(null);
}