zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    测试一下你的T-SQL基础知识-count
    测试一下你的T-SQL基础知识-subquery
    Microsoft SQL Server 2012 管理 (2): Auditing
    Webpack
    react
    Webpack 傻瓜式指南(一)
    谈谈react-router学习
    使用Flexible 实现手淘H5 页面的终端适配学习
    Promise 让异步更优
    基于LeanCloud云引擎的Web全栈方案
  • 原文地址:https://www.cnblogs.com/ITyannic/p/11646730.html
Copyright © 2011-2022 走看看