
lambda是一个匿名函数,是一段可以传递的代码,也可以理解为函数参数。基本形式() -> {}
简化了很多无用的代码,例如:相比匿名内部类定义比较器
/**
* 匿名内部类
*/
@Test
public void test1(){
// 匿名内部类实现接口,匿名内部类的实例作为参数
Comparator<Integer> com = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1,o2);
}
};
TreeSet<Integer> ts = new TreeSet<>(com);
}
/**
* lambda表达式
*/
@Test
public void test2(){
Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
// 更简洁可以这样写
TreeSet<Integer> ts = new TreeSet<>(Integer::compare);
}
对于一些重复代码可以使用相应的设计模式进行优化,例如定义比较器接口然后进行分别实现,不过代码量也不小。
总之就是一个词,简洁。