Используйте лямбда-фильтр, если элемент не равен нулю, иначе игнорируйте фильтр - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть 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 равно нулю, чтобы просто вернуть первую строку из списка.Когда ProEffectiveDate имеет значение null, как мне игнорировать этот фильтр?

1 Ответ

0 голосов
/ 07 февраля 2019

Похоже, что ваша логика заключается в проверке , если какой-либо из 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);
}
...