流简短的定义就是“从支持数据处理操作的源生成的元素序列”。

 

流于集合的区别:

粗略地说,集合与流之间的差异就在于什么时候进行计算。集合是一个内存中的数据结构, 它包

含数据结构中目前所有的值——集合中的每个元素都得先算出来才能添加到集合中。(你可 以往

集合里加东西或者删东西,但是不管什么时候,集合中的每个元素都是放在内存里的,元素 都得

先算出来才能成为集合的一部分。)

 

流则是在概念上固定的数据结构(你不能添加或删除元素),其元素则是按需计 算的。

 

流的使用:

流的使用一般包括三件事:

  • 一个数据源(如集合)来执行一个查询;
  • 一个中间操作链,形成一条流的流水线;
  • 一个终端操作,执行流水线,并能生成结果。

 

流的操作: 分为中间操作和终端操作

流

 

 

使用流:

筛选:

    filter:

映射:

    map: 会接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素

排序:

给库存排序,比较苹果的重量

inventory.sort(comparing(Apple::getWeight));

 

方法引用:

File[] hiddenFiles = new File(".").listFiles(File::isHidden);

需用Java 8的方法引用::语法(即“把这 个方法作为值”)将其传给listFiles方法;

 

以写(int x) -> x + 1,表示“调用时给定参数x, 就返回x + 1值的函数”

 

Apple::isGreenApple (它接受参数 Apple 并返回一个 boolean)

 

目标引用放在分隔符::前,方法的名称放在后面。

例如, Apple::getWeight

就是引用了Apple类中定义的方法getWeight。

请记住,不需要括号,因为 你没有实际调用这个方法。

方法引用就是Lambda表达式(Apple a) -> a.getWeight()的快捷 写法。