摘要: Java8在2014年已经发布,现在已经逐渐被广大开发者所认同,越来越多的框架选用,越来越多的公司选择Java8,经过一段时间的学习,发现Java的一些改动值得学习。
Lambda是一个匿名函数,我们可以吧Lamdba表达式理解为一段可以传递的代码。使用Lambda可以写出更简洁、灵活的代码。
例如,我们要比较两个整数的大小,如果使用比较器的话,代码可以这么写:
public void testComparator(){ Comparator<Integer> comparator = new Comparator<Integer>() { @Override public int compare(Integer x, Integer y) { return Integer.compare(x, y); } }; }当使用了Lambda表达式以后,可以这样:
public void testComparatorLam(){ Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y); }函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口(Single Abstract Method)。Java8在使用Lambda时,需要函数式接口的声明。如果每次使用Lambda表达式都需要自己编写函数式接口,确实有点麻烦。因此就有了四大函数式接口:Consumer, Supplier, Funciton, Predicate
Steam不同于之前java.io.*包中的数据流,它是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的的聚合操作。
使用stream API可以使复杂的业务逻辑一行代码搞定:
public void test(){ list.stream() .filter((e) - > stu.getScore > 60) .limit(3) .forEach(System.out:println); }