概述:
Stream流是java8新增的函数式编程方式.其实就是一个函数模型,用来解决已有集合存在的弊端,比如必须依靠循环的方式来遍历集合元素,造成了代码的冗余等.
Stream流类似于工厂流水线,它有以下特点:
1.Stream流是单向的,不能重复使用.重复使用同一个Stream流对象,会报出非法状态异常.
2.Stream流不能保存数据.Stream流其实是集合元素的函数模型,本身并不能存储元素.
3.Stream流具有延迟性.在调用终结方法之前,流的延迟方法不会执行.
4.Stream流不能修改源数据.修改Stream流的数据不会影响到原来集合或数组的数据.
java引入:
Java中使用Stream接口来代表Stream流.
Stream接口中定义的一些常用的方法,这些方法又分为延迟方法和终结方法.
延迟方法定义:返回值类型是Stream接口类型的方法是延迟方法.
终结方法定义:返回值类型不是Stream接口类型的方法式终结方法,比如无返回值void
int count();返回流中元素的个数
void forEach(Comsumer<? super T> action);逐一处理元素,解决方案在函数式接口中定义.Comsumer的泛型类型可以是T的父类.
Stream<T> filter(Predicate<? super T> condition);把需要的元素过滤出来,返回true.
Stream<R> map(IntFunction<? superT, ? extends R> mapper)把T类型的元素做一定的处理,返回R类型的一个元素
Stream<T> limit(long maxSize);取前maxSize个元素
Stream<T> skip(long n);跳过前n个元素
static Str