Stream的生成方式:
1、collection体系的集合可以使用默认方法.Stream()直接生成流 defult Stream stream()
2、Map体系的集合间接的生成流,通过keyset(),values(),entryset(),转换为collection体系的集合
3、数组可以通过Stream接口的静态方法of(T… values)生成流
Stream的常见中间操作方式:
Stream filter(Predicate predicate):用于对流中的数据进行过滤
Predicate接口中的方法:
boolean test(T t):对于给定的参数进行判断,返回一个布尔值
Stream limit(long maxSize):返回此流中的元素组成的流,截取前指定参数个数的数据
Stream skip 跳过指定参数个数的数据,返回由该流的剩余元素组成的流
static Stream concat(Stream a,Stream b):合并a和b两个流为一个流
Stream distinct():流元素去重(根据Object.equals(Object)组成)
Steam sorted():返回根据自然排序的流
Steam sorted(Comparator comparetor):返回根据比较器排序的流
Stream map(Function mapper):返回给定函数应用于此流元素的结果组成的Stream流
IntStream mapToInt(ToIntFunction mapper):返回一个IntStream,其中包含将给定函数应用于此流的元素的结果
ToIntFunction接口中的方法:int applyAsInt(T value)
IntStream中有sum()等处理方法
Stream的常见终结操作方式(一个流只能有一个终结操作):
void forEach(Consumer action):对此流的每个元素执行操作
consumer接口中的方法 void accept(T t):对给定的参数执行此操作
long count():返回此流中的元素数
Stream的收集操作
作用:对数据使用Stream流的方式操作完毕以后,将流中的数据收集到集合中。
Stream的收集方法:
R collect (Collector collector)
它是通过工具类Collectors 提供了具体的收集方式
public static Collector tolist():把元素收集在list集合中
public static Collector toset():把元素收集在set集合中
public static Collector tomap(Function keyMapper,Function valueMapper):把元素收集在map集合中
arrayStream.collect(Collection.tomap(s->s.split(",")[0],s->Integer.parseInt(s.split(",")[1])));