java stream

一、定义

public interface Stream<T>
extends BaseStream<T,Stream<T>>

Stream是jdk1.8引入的,和lambda表达式一起,大大方便了我们的编程。stream不是一种数据结构,它是数据的视图。所以它不是一个数据源,通过数组或者集合来创建:
  -Collection.stram()或
Collection.parallelsStream()
  -Array.stream()

二、常用函数

  stream的操作分为两类:中间操作和结束操作。

  中间操作:就是流的中间状态,它是惰性操作,不立即执行,每次调用中间操作只是产生一个新的stream视图而已。

      结束操作:流最后的执行结果。

 

  常用的中间操作:filter(过滤),map(转换),sorted(排序),distinct(去重);

      常用的结束操作:collect(),max(最大),min(最小),forEach(遍历),findFirst(返回第一个)

  这些操作基本上很常用也很简单,主要是这个collect()收集器,下面我们看看这个collect()操作。

stream.collect()将一个stream转为一个集合需要哪些东西呢?

  1.目标集合

  2.每个数据的操作

  3.最后数据的合并操作

所以collect()就定义为:

<R> R collect(Supplier<R> supplier,
BiConsumer<R, ? super T> accumulator,
BiConsumer<R, R> combiner);

但显然这样操作太麻烦了,所以jdk提供了一个更加简单但方式:
<R, A> R collect(Collector<? super T, A, R> collector);
可以通过Collections的工具类生成Collector,这样就很方便了。

collect()生成list:
ArrayList list = stream.collect(Collectors.toList())

collect()生成map:
Map<Integer,User> map = stream().collect(Collectors.toMap(User::getId,Function.identity()));

stream只要你用溜了,写起代码来会大大方便很多,省去了我们很多自己编码,所以要掌握好啊。



参考文献:
https://www.cnblogs.com/CarpenterLee/p/6545321.html

 

posted @ 2019-12-16 23:53  东篱闲菊  阅读(328)  评论(0编辑  收藏  举报