Ang*_*ina 5 java lambda java-stream
我有一个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
Run Code Online (Sandbox Code Playgroud)
这是我目前的代码:
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);
Run Code Online (Sandbox Code Playgroud)
现在,我必须添加if 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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
150 次 |
最近记录: |