相等的Java流,始终返回null

时间:2018-11-09 11:06:26

标签: java java-stream equals

关于我上一个问题的其他问题。

    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;

我首先检查费用是否是最新的,因为可能会有即将到来的费用和不再有效的费用。然后,我尝试将ID与剩余费用进行匹配。

问题是最后一个过滤器。 我已经检查了很多次,并且在数据中,只有1个条目具有当前日期和相同的ID。 (它以前是输入的,但出于调试目的,我已经对其进行了硬编码)

如果我取消日期过滤器,它仍然只会返回BigDecimal 1000。

我在这里没看到什么?

两个值均为Strings

1 个答案:

答案 0 :(得分:0)

好吧。

不是一个真正的答案,但是我用光了时间,做了同样的事情 使用常规的for循环,一切都按预期进行,并且工作正常……

所以我仍然不会继续使用流。

编辑: 代码

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);
            }
        }
      }
  }