函数式接口
有且只有一个抽象方法,多个非抽象方法的抽象类
熟悉的函数式接口有:
java.lang.Runnable
java,util.Comparator
JDK 1.8 后新增加的函数式接口包:
java.util.function
函数式接口可以隐式的转化为lambda表达式
//遍历集合
List list = Arrays.asList(1,2,3,4,5,6,7);
list.forEach(ele -> System.out.println(ele));
// 删除偶数元素
list.removeIf(ele -> ((int)ele)% 2 == 0);
Lambda 表达式
lambda 表达式可以理解是一个匿名函数,也可以用lambda表达式去表示一个匿名内部类
语法结构:
(参数列表)->{表达式;}
(参数列表):可以看做方法的参数
{表达式;}:是方法体
// 内部类和lambda实现的对比
Runnable run = new Runnable()
{
@Override
public void run()
{
System.out.println("内部类");
}
};
run.run();
Runnable runl = ()->System.out.println("Lambda");
runl.run();