java 8 stream 提供了下面几种类型的求和
Stream::mapToInt
Stream::mapToDouble
Stream::mapToLong
1
2
3
4
5
6
7
8
9
10
11
|
public void test() {
List<Person> people = new ArrayList<>();
people.add( new Person( "zhangsan" , 20 ));
people.add( new Person( "lisi" , 26 ));
people.add( new Person( "wangwu" , 35 ));
int sum = people.stream()
.mapToInt(p -> p.getAge())
.sum();
System.out.println( "Total of ages " + sum);
}
|
但是没有BigDecimal类型,可以使用下面方法实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public void test() {
List<Person> list = new ArrayList<>();
list.add( new Person( "zhangsan" , 20 , new BigDecimal( 10.5 )));
list.add( new Person( "lisi" , 26 , new BigDecimal( 22.2 )));
list.add( new Person( "wangwu" , 35 , new BigDecimal( 15.54 )));
BigDecimal amounts = list.stream().map(item -> item.getAmount())
.reduce(BigDecimal.ZERO, BigDecimal::add);
amounts = amounts.setScale( 1 , BigDecimal.ROUND_DOWN);
System.out.println( "Total of amounts:" + amounts);
// 或者
BigDecimal sum = list
.stream()
.map(Person::getAmount)
.reduce(BigDecimal::add)
.get();
sum = sum.setScale( 1 , BigDecimal.ROUND_DOWN);
System.out.println( "Total of sums: " + sum);
}
|
补充知识:Java算法——求1到100累加的和,3种循环
1、for循环
1
2
3
4
5
6
|
int sum = 0 ;
for ( int i = 1 ; i <= 100 ; i++) {
sum += i;
}
System.out.println( "1到100累加的和为:" + sum);
|
2、while循环
1
2
3
4
5
6
7
|
int sum = 0 ;
int i = 1 ;
while (i <= 100 ) {
sum += i;
i++;
}
System.out.println( "1到100累加的和为:" + sum);
|
3、do...while循环
1
2
3
4
5
6
7
|
int sum = 0 ;
int i = 1 ;
do {
sum += i;
i++;
} while (i <= 100 );
System.out.println( "1到100累加的和为:" + sum);
|
以上这篇Java lambda 循环累加求和代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/angus_Lucky/article/details/85062728