1、函数式编程范式的基石:一是没有共享的可变数据,二是将方法和函数即代码传递给其他方法的能力。
不能有共享的可变数据的要求意味着,一个方法是可以通过它将参数值转换为结果的方式完全描述的;换句话说,它的行为就像一个数学函数,没有可见的副作用。
2、Java 8中增加的一个编程概念是通过API来传递代码的能力。Stream API就是构建在通过传递代码使操作行为实现参数化的思想上的。
3、Java 8中新增的编程概念:流处理。流是一系列数据项,一次只生成一项。程序可以从输入流中一个一个读取数据项,然后以同样的方式将数据项写入输出流。一个程序的输出流很可能是另一个程序的输入流。
4、JAVA 8的新功能:方法引用。例子:
File[] hiddenFiles = new File(".").listFiles(File::isHidden);
Java 8之前的写法
File[] hiddenFiles = new File(".").listFile(new FileFiilter(){
public boolean accept(File file){
retrun file.isHidden():
}
});
5、Stream API 和 Collection API
和Collection API相比,Stream API处理数据的方式非常不同。用集合的话,你得自己去做迭代的过程。你得用for-each循环一个个去迭代元素,然后再处理元素。我们把这种数据迭代的方法称为外部迭代。相反,有了Stream API,你根本用不着操心循环的事情。数据处理完全是在库内部进行的。我们把这种思想叫作内部迭代。
Collection主要是为了存储和访问数据,而Stream则主要用于描述对数据的计算。
6、行为参数化就是可以帮助你处理频繁变更的需求的一种软件开发模式。一言以蔽之,它意味着拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被你程序的其他部分调用,这意味着你可以推迟这块代码的执行。
7、匿名类:允许同时声明并实例化一个类,换句话说,它允许你随用随建。
匿名类的缺点:第一,它往往很笨重,因为它占用了很多空间。第二,很多程序员觉得它用起来很让人费解。
摘自《Java 8实战》,看的电子书,后面需要购买了