首页 > Windows开发 > 详细

jdk8-stream-api

时间:2021-04-06 09:06:01      阅读:42      评论:0      收藏:0      [点我收藏+]

1.stream简介

         stream 是一个用来处理集合个数组的api

             jdk 8 引入strream的原因:1.去掉for循环,使编程变的更加简单(实际运行效率可能没有for循环高)2.parallel,多核友好,java函数式编程使得编写并行程序如此简单,你需要的仅仅是调用一下parallel()方法

             stream的特性: 1.不是数据结构,没有内存存储   2.不支持索引(没有数据,类似于spark中的RDD,只是搭建计算框架,在最后执行时才执行整个流程)   3.延迟计算   4.支持并行  5.很容易生成数组和集合   6.支持过滤查找转化等多种操作

 

2.Stream运行机制

           Stream分为 源source,中间操作,终止操作 流的源可以是一个数组、一个集合、一个生成器方法,一个I/O通 道等等。 一个流可以有零个和或者多个中间操作,每一个中间操作都会返回 一个新的流,供下一个操作使用。一个流只会有一个终止操作 Stream只有遇到终止操作,它的源才开始执行遍历操作

3.Stream的创建

            1、通过数组   2、通过集合来   3、通过Stream.generate方法来创建      4、通过Stream.iterate方法来创建    5、其他API创建

               创建stream对象,of 方法中,参数为:(T... ..values) 可看做是一个多个同种类型对象组成的集合,forEach()方法,参数为:(Consumer<? super T>action),即一个Consumer接口,泛型为调用Stream中所装载的对象的父类或者自己,比如下面,调用对象为Stream<Student>,泛型为它的父类Teacher        

 public static void common_fileInputStream() throws IOException {
        String[] arr = {"a", "b", "c", "d", "e", "f", "g", "h"};
        Student stu = new Student("q");
        Stream<String>stud=Stream.of(arr);
        Stream<Student>student=Stream.of(stu,stu,stu,stu);/**1 of  : (T... values)*/
        Consumer<Teacher> consumer=new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println("o = " + o);
            }
        };
        student.forEach(consumer);/**参数:(Consumer<? super T> action)*/
       // stud.forEach(consumer);
    }

 

4.Stream常用API

            中间操作: 过滤 filter 去重 distinct 排序 sorted 截取 limit、skip 转换 map/flatMap  其他 peek

              终止操作: 循环 forEach 计算 min、max、count、 average 匹配 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny 汇聚 reduce 收集器 toArray collec

 

jdk8-stream-api

原文:https://www.cnblogs.com/baierhu/p/14619849.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!