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));
}
覺得爲時已晚,恰恰是最早的時候。