引入流

流是什么

流是Java api的新成员,它允许你以申明式的方式处理数据集合。
申明性:更简洁,更易读
可复合:更灵活
可并行:性能更好
流的简介:从支持数据处理操作的源生成的元素序列

  • 元素序列
    就像集合一样,流也提供一个接口,可以访问特定元素类型的一组值。

  • 流会使用一个提供数据的源,例如集合,数组或者输入输出资源。
  • 数据处理操作
    流的数据处理功能支持类似于数据库的操作。filter,map,reduce,find,sort,match。
  • 流水线
    很多流操作本身会返回一个流,这样的多个操作就可以链接在一起,形成流水线。
  • 内部迭代
    与使用迭代器显示迭代不同的集合不同,流的更多操作都是在背后迭代。
流与集合

集合与流之间的差异就在于什么时候进行计算,集合是一个内存中的数据结构,它包含数据结构中目前所有的值,集合中的每个元素的值都需要先算出来才可以添加到集合里。
流则是概念上的数据结构(不能添加或者删除元素),其元素是按需计算的。这是一种生产者和消费者的关系,只有消费者要求的时候才会计算。

内部迭代和外部迭代

使用foreach这种方式被称为外部迭代,streams库使用内部迭代。

 List<Integer> list = Arrays.asList(1,2,3,45);
        // 外部迭代
        for (Integer i : list) {
            System.out.println(i);
        }
        //内部迭代
        list.stream().forEach(i-> System.out.println(i));
内部迭代和外部迭代.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容