我有一个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
为空时,如何忽略此过滤器?
答案 0 :(得分:2)
似乎您需要的逻辑是检查 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);
}