关于我上一个问题的其他问题。
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
答案 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);
}
}
}
}