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