Stream(1)--流的概念、与集合的异同

1. 什么是流

  • 可以看成遍历数据集的高级迭代器

  • 从支持数据处理操作的-->生成的-->元素序列

    • 源:提供数据的源:集合、数组或I/O资源
    • 从有序集合生成流时会保留原有的顺序
  • 但是与集合不同的是,你可以以声明式方式处理数据集

2. 集合与流

  • 集合与流的差异在于什么时候进行计算
    • 集合中的每个元素必须全部算出来才能添加,类似于DVD中电影;而流按需计算。就像互联网看电影那样,不用等待电影全部下载
  • 只能被消费一次
Stream s = lists.Stream();
s.forEach(System.out::println);
s.forEach(System.out::println);

上述代码会报错

  • 另外一个不同点在于遍历数据的方式
    • 集合时外部迭代,即需要用户去做迭代;而流使用内部迭代,即它帮你做了

3. 中间操作与终端操作

  • 像filter等可以连接起来的流操作称为中间操作
    • 中间操作会返回另一个流
    • 除非有终端操作,否则中间操作不会执行任何处理
  • 关闭流的操作称为终端操作
    • 结果为任何不是流的值

你可能感兴趣的:(Stream(1)--流的概念、与集合的异同)