java stream-统计分析(IntStream、LongStream、DoubleStream、.mapToInt()、.summaryStatistics()) 作者:马育民 • 2023-04-17 20:13 • 阅读:10113 # 介绍 转换成 `IntStream`、`LongStream`、`DoubleStream` 流,可以进行方便进行统计分析,如:求最大值、最小值、求和、平均值、总数等功能 ### 转换方式 `Stream` 可通过方法 `mapToInt`、`mapToLong`、`mapToDouble()` 进行转换 ### 例子:元素是数字类型 ``` List list = new ArrayList<>(); Collections.addAll(list,1,2,3,4); IntSummaryStatistics res = list.stream() .mapToInt(e->e) // 转换的方式 .summaryStatistics(); // 统计 System.out.println("最大值:"+res.getMin()); System.out.println("最小值:"+res.getMax()); System.out.println("总数:"+res.getCount()); System.out.println("平均数:"+res.getAverage()); System.out.println("和:"+res.getSum()); ``` ### 例子:元素是对象类型 `Student` 类: ``` package std; public class Student{ String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` 核心代码: ``` List list = new ArrayList<>(); Collections.addAll(list, new Student("李雷",4), new Student("韩梅梅",1), new Student("lili",3), new Student("lucy",2) ); IntSummaryStatistics res = list.stream() .mapToInt(Student::getAge) // 根据年龄生成 IntStream 流 .summaryStatistics(); // 统计 System.out.println("最小值:" + res.getMin()); System.out.println("最大值:" + res.getMax()); System.out.println("总数:"+ + res.getCount()); System.out.println("平均数:" + res.getAverage()); System.out.println("和:"+ res.getSum()); ``` 原文出处:http://malaoshi.top/show_1IX5KshCmrbA.html