包括
流处理:流是一系列数据项,一次只生成一项
用行为参数化把代码传递给方法
并行与共享的可变数据
Java中的函数
方法和Lambda作为一等公民
“::”方法引用符号
Lambda—匿名函数
函数式编程风格–编写把函数作为一等值来传递的程序(见程序 Apple.java AppleTest.java)
Stream(流)
foreach迭代集合,然后去处理元素,这种迭代成为外部迭代
stream的数据处理在库内部进行,成为内部迭代
Collection主要是为了存储和访问数据,Stream则主要用于对数据的计算
stream允许并提倡并行处理一个Stream中的元素
默认方法
局部代码如下
public class Charpter1Class {
public static void main(String[] args) {
//未使用Java8
File[] files = new File("/").listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.canRead();
}
});
for (File file:files) {
System.out.println(file.getName());
}
System.out.println("--------------");
//使用Java8,使用::进行方法调用
File[] files1 = new File("/").listFiles(File::canRead);
//使用java8,使用Lambda表达式
File[] files2 = new File("/").listFiles(file->file.canRead());
//输出文件名(输出方法后面讲解)
Arrays.stream(files1).map(file -> file.getName()).collect(toList()).forEach(System.out::println);
System.out.println("+++++++++++++++");
Arrays.stream(files2).map(file -> file.getName()).collect(toList()).forEach(System.out::println);
}
}
更完整示例将会上传到[github](https://github.com/waymeng/spring-in-action)/