• 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
  • 相关阅读:
    spring揭秘 读书笔记 六 bean的一生
    分枝限界算法
    libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)
    Unity学习笔记 之 发射小球碰撞物体的代码记录
    hdu1281 棋盘游戏 --- 最大匹配
    javascript设计模式
    3、Android中Activity的跳转
    2.11 确定运行计划
    php扩展之 pdo_mysql.so
    POJ 1061 青蛙的约会(扩展欧几里得)
  • 原文地址:https://www.cnblogs.com/ITyannic/p/11646730.html
Copyright © 2020-2023  润新知