Java 相等的流,始终返回 null

Java stream with equal, always returning null

关于我上一个问题的补充问题..

    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。 (它是之前输入的,但出于调试目的,我现在已经对其进行了硬编码)

如果我关闭日期过滤器,这仍然只有 return BigDecimal 1000。

我在这里没看到什么?

两个值都是Strings

嗯..

不是真正的答案,但我 运行 没时间,做了完全相同的事情 使用常规的旧 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);
            }
        }
      }
  }