package com.gp6.list.sum;
import com.gp6.bean.Employee;
import com.gp6.list.utils.ListUtil;
import java.math.BigDecimal;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.LongSummaryStatistics;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 列表 求和
*
* @author gp6
* @date 2019-07-23
*/
public class TestSum {
public static void main(String[] args) {
List<Employee> employeeList = ListUtil.packEmployeeList();
// 对list中,对年龄求和
Integer ageSum = employeeList.stream().mapToInt(Employee::getAge).sum();
// 121
System.out.println(ageSum);
// 对list中,对薪资求和
long salarySum = employeeList.stream().mapToLong(Employee::getSalary).sum();
// 56000
System.out.println(salarySum);
// 先将 重量 取出,在计算总和
BigDecimal weightSum = employeeList.stream().map(Employee::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
// 416.45000000000000994759830064140260219573974609375(精度问题)
System.out.println(weightSum);
// 根据 性别 分组,再计算出 年龄 信息
Map<Integer, IntSummaryStatistics> map = employeeList.stream().collect(Collectors.groupingBy(Employee::getSex, Collectors.summarizingInt(Employee::getAge)));
//Map<Integer, LongSummaryStatistics> map = employeeList.stream().collect(Collectors.groupingBy(Employee::getSex, Collectors.summarizingLong(Employee::getAge)));
map.forEach((sex, value) -> {
// 年龄总和
long ageTmpSum = value.getSum();
// 最大年龄
long ageMax = value.getMax();
// 最小年龄
long ageMin = value.getMin();
// 年龄平均值
double averageAge = value.getAverage();
System.out.println(ageTmpSum);
System.out.println(ageMax);
System.out.println(ageMin);
System.out.println(averageAge);
});
}
}
网友评论