Java поток с равным, всегда возвращающий ноль - PullRequest
0 голосов
/ 09 ноября 2018

Дополнительный вопрос о моей последней проблеме ..

    BigDecimal fee;

    fee = fees.stream()
            .filter(p -> p.getTodate().isAfter(LocalDateTime.now()))
            .filter(p -> p.getFromdate().isBefore(LocalDateTime.now()))
            .filter(p -> p.getId().equals("001001"))
            .map(Fee::getFee)
            .findFirst()
            .map(BigDecimal::new)
            .orElse(new BigDecimal(1000));

    return fee;

Сначала я проверяю, что сбор актуален, так как могут быть предстоящие сборы и сборы, которые больше не действительны. Затем я пытаюсь сопоставить идентификатор с оставшимися платежами.

Проблема в последнем фильтре. Я проверил несколько раз и в данных, есть ровно 1 запись с текущей датой и тем же идентификатором. (он был введен ранее, но для целей отладки я сейчас жестко запрограммировал его)

и если я уберу фильтры даты, это все равно вернет только BigDecimal 1000.

Что я здесь не вижу?

Оба значения Strings

1 Ответ

0 голосов
/ 13 ноября 2018

Ну ..

Не совсем ответ, но у меня не хватило времени, и я сделал то же самое. с обычным старым циклом for, и все прошло так, как ожидалось, и работало просто отлично ...

Так что я все равно не буду использовать потоки, идущие вперед ..

EDIT: код

for(Fee fee : fees){
    if(fee.getId.equals(id)){
        if(fee.getFromdate().isBefore(LocalDateTime.now())){
            if(fee.getTodate().isAfter(LocalDateTime.now())){
                BigDecimal z = new BigDecimal(fee.getFundservicefee());
                return z.movePointLeft(2);
            }
        }
      }
  }
...