1,Stream(管道)
1. 什么是Stream
(1)Stream在Java8中被定义为泛型接口
(2)Stream代表的是数据流
(3)Stream不是一个数据结构,不直接存储结构
(4)Stream通过管道操作数据
(5)创建一个stream接口实现类的对象(stream stream = person.stream();)
(6)管道代表一个操作序列
2. java中双冒号::的功能
JDK8中有双冒号的用法,就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下。
2,filter(过滤器)
- 统计student中名字包含"小"字或"白"字的并计算他们的平均年龄
@Test
public void test3() {
List<Student> students = AddStudent.add();
double average = students.stream()
.filter(student -> student.getName().indexOf("小") >= 0 || student.getName().indexOf("白") >= 0)
.mapToDouble(Student::getAge)
.average()
.getAsDouble();
System.out.println(average);
}
- 把一个list转化为另一个list集合
// 遍历原始的集合,并把这个集合转化为另一个集合。
@Test
public void conver(){
Student student = new Student("王宇",22, Sex.MAN);
// 利用stream.of把此流转化为list集合
List<Student> studentList = Stream
.of(student)
.collect(Collectors.toList());
// 把上一个list集合打成了另一个list集合,遍历并输出
studentList
.stream()
.map(Student::getAge)
.collect(Collectors.toList())
.forEach(s -> System.out.println(s));
}
觉得为时已晚,恰恰是最早的时候。