介绍
转换成 IntStream
、LongStream
、DoubleStream
流,可以进行方便进行统计分析,如:求最大值、最小值、求和、平均值、总数等功能
转换方式
Stream
可通过方法 mapToInt
、mapToLong
、mapToDouble()
进行转换
例子:元素是数字类型
List<Integer> 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<Student> 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());