在jdk8中加入Lambda表达式,改善了匿名内部类的使用,简化了代码。在循环集合时也可以使用。
我们来用一个自定义排序数组解释Lambda表达式:
package jdk8Special.lambda;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
public class arraysSort {
public static void main(String[] args) {
Integer[] arr = {2, 5, 6, 9};
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2 > 0 ? 0 : -1;
}
});
//**********
Arrays.sort(arr, (o1, o2) -> o1 - o2 > 0 ? 0 : -1);
for (Integer i : arr) {
System.out.println(i);
}
}
}
不是所有的内部类都能这样子简化,主要是以为在内部类中起到作用的语句只有一句,compare
方法同来判定两个数顺序的,
在集合中也可以使用Lambda表达式:
List list = new ArrayList<>();
list.add(5);
list.add(5);
list.add(5);
list.forEach((i) -> System.out.println(i));
我看了源码才发现,现在突然找到了Collection接口为什么要继承Iterable接口了,就是为了拥有这遍历方法!!!!恍然大悟啊啊啊