Java8——Stream流
Stream是数据渠道,用于操作集合、数组等生成的元素序列。
Stream操作的三个步骤:
- 创建Stream
- 中间操作
- 终止操作
一、获取stream的四种方式
1.通过collection系列集合的stream()或parallelStream()获取。
@Test
void test11(){
List<String> list = new ArrayList<>();
Stream<String> stringStream = list.stream();
}
2.通过Arrays中的静态方法stream()获取数组流。
@Test
void test11(){
Person[] person = new Person[10];
Arrays.stream(person);
}
3.通过Stream中的静态方法of()。
@Test
void test11(){
Stream<String> stream = Stream.of("a", "b", "c");
}
4.创建无限流
/**
* 迭代
*/
@Test
void test11(){
Stream<Integer> integerStream = Stream.iterate(0, x -> x + 2);
}
/**
* 生成
*/
@Test
void test11(){
Stream.generate(() -> Math.random());
}
二、中间操作
中间操作不会执行任何操作,只有终止操作才会一次性输出全部值,即“惰性求值”。
2.1 筛选与切片
filter——接收lamdba,从流中排除某些元素
@Test
void test12(){
List<Person> personList = Arrays.asList(
new Person("Java旅途",18),
new Person("Java旅途",20)
);
// 中间操作
Stream<Person> personStream = personList.stream()
.filter(e -> e.getAge() > 18);
// 终止操作
personStream.forEach(System.out::println);
}
limit——截断流,使其元素不超过给定数量
@Test
void test12(){
List<Person> personList = Arrays.asList(
new Person("Java旅途",18),
new Pers