- 什么是Stream流?
- 在 JDK 8中,得益于 Lambda 带来的函数式编程,引入了一个全新的 Stream 流概念。
- 目的:简化数组和集合的API使用
- Stream流使用步骤:
- 获取数组或集合的Stream流
- 对Stream流执行中间方法
- 对Stream流执行终结方法
- 获取Stream流的方式:
- 对于集合,使用Collection集合stream方法获取
- 对于数组,使用Arrays工具类的stream方法获取
- 不管是集合还是数组,都可以使用Stream的静态方法of获取
- Stream流的中间方法:
- 过滤:filter
- 映射(转换):map
- 获取前几个元素:limit
- 跳过前几个元素:skip
- 去除流中重复的元素:distinct
- Stream流的终结方法:
- 遍历每个元素:forEach
- 统计元素个数:count
- Stream流收集为集合:collection
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) throws ParseException {
String[] arr = {"张百忍","张益达","王菲","张宇","张一山","张益达"};
List<String> list = new ArrayList<>();
Collections.addAll(list,"张百忍","张益达","王菲","张宇","张一山","张益达");
//Stream流的获取
Stream<String> lS = list.stream();
Stream<String> aS = Arrays.stream(arr);
Stream<String> stream = Stream.of(arr);
//Stream流的中间方法:filter、map、limit、skip、distinct
Stream<String> s1 = Stream.of(arr).filter(s -> s.matches("张.."));
Stream<String> s2 = Stream.of(arr).map(s -> "000" + s);
Stream<String> s3 = Stream.of(arr).limit(2);
Stream<String> s4 = Stream.of(arr).skip(4);
Stream<String> s5 = Stream.of(arr).distinct();
//Stream流的终结方法:forEach、count
s2.forEach(s -> System.out.println(s));
System.out.println(s5.count());
//Stream流收集为集合:collection
List<String> collect = Stream.of(arr).map(s -> "收集----" + s).collect(Collectors.toList());
System.out.println(collect);
}
}