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);
}
}
}
}
关于我上一个问题的补充问题..
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);
}
}
}
}