zoukankan      html  css  js  c++  java
  • 深入理解Java 8 Stream

    Java 8中新增了Stream,主要是lambda表达式的应用,其链式调用简洁,用于高效表达集合操作。

    先对Stream的使用做了解,参照blog

    (1) 生成Stream的方式

    主要有以下几种

    1. 数组 - Array

    String[] arr = {"gh","shf","awuygwi"};
    Stream.of(arr).forEach(System.out::println);
    Arrays.stream(arr).forEach(System.out::println);

    2. 集合 - Collection

    List<String> list = Arrays.asList(arr);
    list.stream().forEach(System.out::println);
    Stream.of(list).forEach(System.out::println);

    3. 文件io

    String filePath = "xxx";
    try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
        reader.lines().forEach(System.out::println);
    } catch (IOException e) {
        e.printStackTrace();
    }

    (2) Stream的操作分Intermediate, Terminal和short-circuiting

    1. Intermediate操作

    构成链式调用的部分,做过滤/映射等。该类型操作不会立即对元素作用,直到Terminal操作开始起作用。

    常见的比如,filter(), map()/flatMap(), sorted(), limit()

    2. Terminal操作

    Terminal操作生成最终结果。一个Stream对应一个Terminal操作。

    常见的比如,forEach(), collect(), min(), max(), count(), findFirst()

    3. short-circuiting操作

    short-circuiting常用于操作无限Stream,比如allMatch(), findFirst(), limit()

    以下是使用Stream的一个例子,

    filter,mapToInt 为Intermediate操作;sum为Terminal操作
    int sum = widgets.stream().filter(w -> w.getColor() == RED).mapToInt(w -> w.getWeight()).sum();

    (3) Stream典型用法

     参照blog,实践中...

  • 相关阅读:
    [书目20071127]图书 时间陷阱 目录
    [文摘20071113]十四项心理定律
    Win2003下:JDK1.5 + Eclipse3.2 + Tomcat6.0 + tomcatPluginV32
    [转]初试eclipse mysql
    [转]测试工具
    [转]如何进行软件需求分析
    OA流程设计尝试:Div步骤拖动
    [转]需求分析的20条法则
    Eclipse 3.2 + Tomcat 5.5 + Lomboz 3.2 简单配置
    [转]软件项目管理中的风险管理研究
  • 原文地址:https://www.cnblogs.com/hello-yz/p/10190390.html
Copyright © 2011-2022 走看看