Clo*_*mez 10 java java-8 java-stream
我理解如何收集到一个List,但无法想象我将如何只返回一个过滤对象的参数作为String.
fee = new BigDecimal(fees
.stream()
.filter(p -> p.getTodate().isAfter(LocalDateTime.now()))
.filter(p -> p.getFromdate().isBefore(LocalDateTime.now()))
.filter(p -> p.getId().equals(id))
return fee;
Run Code Online (Sandbox Code Playgroud)
我首先检查费用是否是最新的,因为可能会有即将开始的费用和费用不再有效.然后我将id与剩余费用相匹配.但是最后一次过滤和返回之间缺少代码.
我只想String从Stream对象(p.getFee)返回BigDecimal构造函数.
我知道Stream过滤器后只剩下一个物体.
Era*_*ran 14
使用findFirst返回的第一个元素Stream是通过你的过滤器.它返回一个Optional,因此您可以使用它orElse()来设置默认值,以防它Stream为空.
fee = new BigDecimal(fees
.stream()
.filter(p -> p.getTodate().isAfter(LocalDateTime.now()))
.filter(p -> p.getFromdate().isBefore(LocalDateTime.now()))
.filter(p -> p.getId().equals(id))
.map(p -> p.getFee())
.findFirst()
.orElse(/*some default value*/));
Run Code Online (Sandbox Code Playgroud)
小智 5
也许这会是一个更好的方法:
fee = fees.stream()
.filter(p -> p.getTodate().isAfter(LocalDateTime.now()))
.filter(p -> p.getFromdate().isBefore(LocalDateTime.now()))
.filter(p -> p.getId().equals(id))
.map(p -> p.getFee())
.findFirst()
.map(BigDecimal::new)
.orElse(/*some default value*/);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |