新特性:
1,流处理
Java 8 在java.util.stream中添加了一个Stream API; Stream<T>就是一系列T类型的项目,也可以看作一个迭代器。Stream API的很多方法可以链接起来形成一个复杂的流水线。
2,用行为参数化把代码传递给方法
Java 8 增加了把方法作为参数传递给另一个方法的能力。
3,方法引用---::
Before Java 8:
File[] hiddenFiles = new File(".").listFiles(new FileFilter() { public boolean accept(File file) { return file.isHidden(); } })
After Java 8:
File[] hiddenFiles = new File(".").listFile(File::isHidden);
方法引用::把这个方法作为值传递给ListFiles方法。
4,Lamda---匿名函数
(int x) -> x+1 表示调用给定参数x,就返回x+1的值。
5, 默认方法
接口中的方法主体由接口提供,而不是实现类提供。Java 8 在接口声明中使用default关键字来表示这一点。
例如,在Java 8里,可以直接对List调用sort方法。它是用Java 8 List接口中的默认方法实现的:
Interface List<E> { default void sort(Comparator<? super E> c) { Collections.sort(this,c); } }
6, 并行
一般集合处理(根据标准筛选数据,提取数据或给数据分组)常常可以并行化,在两个CPU上筛选列表,可以让一个CPU处理列表的前一半,第二个CPU处理后一半,这成为分支步骤(1)。CPU随后对各自的半个列表作筛选(2)。最后, 一个CPU把两个结果合并起来(3)。
7,Optional类
可以避免NullPointerException