Jes*_*nas 4 java lambda java-8
让我们想象我有这个课程:
public class Borrow {
private Float perCent;
private Float rate;
}
Run Code Online (Sandbox Code Playgroud)
我有一个Borrow对象列表:
List<Borrow> moneyBorrowed = new ArrayList<Borrow>();
Run Code Online (Sandbox Code Playgroud)
对于每一个Borrow元素,我要乘perCent的rate,总结所有的结果.
我想在Java 8中使用lambda表达式.我想使用这样的东西:
moneyBorrowed.stream().forEach(p -> {
p.getPerCent() * p.getRate()
}).sum();
Run Code Online (Sandbox Code Playgroud)
但我运气不好......
有什么建议吗?
forEach 是一个没有返回值的终端操作,因此您不能将任何方法调用链接到它.
使用mapToDouble你转换Stream到一个DoubleStream,你可以总结:
double sum = moneyBorrowed.stream().mapToDouble(p -> p.getPerCent() * p.getRate()).sum();
Run Code Online (Sandbox Code Playgroud)
而不是forEach,您需要使用其中一种mapXxx方法.在你的情况下,你可以使用mapToDouble(没有mapToFloat方法):
double sum = moneyBorrowed.stream().mapToDouble(p -> p.getPerCent() * p.getRate()).sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |