JAVA中对list使⽤stream对某个字段求和
//1.对int类型list进⾏求和
Integer[] integerArray = {1, 3, 5, 10, 18};
List<Integer> list = new ArrayList<>(Arrays.asList(integerArray));
IntSummaryStatistics summaryStatistics = list.stream().mapToInt((s) -> s).summaryStatistics();
System.out.println("总和:" + Sum());
System.out.println("平均数:" + Average());
System.out.println("总个数:" + Count());
System.out.println("最⼤值:" + Max());
System.out.println("最⼩值:" + Min());
//2.对list中的对象某个数值字段求和
List<OrderReceivablesDetail> userList = new ArrayList<>();
OrderReceivablesDetail user1 = new OrderReceivablesDetail();
user1.setCollectionRatio(10.1);//double类型
user1.setMoney(new BigDecimal(1000.1));//BigDecimal类型
userList.add(user1);
OrderReceivablesDetail user2 = new OrderReceivablesDetail();
user2.setCollectionRatio(20.1);//double类型
user2.setMoney(new BigDecimal(2000.1));//BigDecimal类型
userList.add(user2);
//写法1
java stream
double collectionRatio = userList.stream().collect(Collectors.summingDouble(OrderReceivablesDetail::getCollectionRatio));
System.out.println("⽐例总和:" + collectionRatio);
//写法2
double collectionRatio2 = userList.stream().mapToDouble(OrderReceivablesDetail::getCollectionRatio).sum();
System.out.println("⽐例总和2: " + collectionRatio2);
//3.对list中对象某个BigDecimal字段求和
BigDecimal sumMoney = userList.stream().map(OrderReceivablesDetail::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add);        System.out.println("总⾦额: " + sumMoney);
//说明:summingDouble⽅法是针对double类型的
//summingLong  long类型
//summingInt  Int类型
/
/第⼆种转换法⽅法
//mapToLong  long类型
//mapToDouble  double类型
//mapToInt    Int类型

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。