使用Stream API对集合中的数据进行操作,就类似使用SQL语句对数据库执行查询
- Stream不会存储数据
- Stream不会改变源对象,而是返回一个持有结果的新Stream
- Stream是延迟执行的,只有在需要结果的时候才执行,即只有执行终止操作,才会执行中间的所有操作,然后返回最终结果
- Stream一旦执行终止操作,就不能再执行其他中间操作和终止操作了。
- 使用场景:可以用于Java处理非关系型数据库操作,如MongDb,Redis
Stream对集合的操作有:排序、查找、过滤、遍历、映射等,是面向CPU的;
使用步骤:
一、创建Stream:
1、集合.stream()返回一个Stream对象
串行流 如:
ArrayList<Object> list = new ArrayList<>();
Stream<Object> stream = list.stream();
并行流 如:
Stream<Object> stream = list.parallelStream();
2、Arrays.stream(数组) 返回一个Stream对象
Integer[] integers = new Integer[10];
Stream<Integer> stream = Arrays.stream(integers);
int[] ints = new int[10];
IntStream stream = Arrays.stream(ints);
3、Stream.of()返回一个Stream对象
Stream<T> stream = Stream.of(T... parameters);
Stream<T> stream = Stream.of(T t);
二、 一系列中间操作:常与四大核心函数接口配合使用
映射常与四大核心函数接口的Function<T,R>函数型接口配合使用,返回自己想得到的数据 过滤/筛选
常与四大核心函数接口的Predicate<T.>判断型接口配合使用
遍历/输出常与四大核心函数接口的Consumer<T.>消费型接口配合使用
三、终止操作
Collectors类提供了很多返回一个集合的静态方法,如:
collect(Collectors.toList())