目录
参考:jdk1.8新特性
Lambda表达式
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中),也可称为闭包,它是推动 Java 8 发布的最重要新特性。形式: () -> (); 即(参数列表)->return(表达式)
定义接口MyPredicate
public interface MyPredicate <T> {
boolean test(T t);
}
定义过滤方法,方法有一个参数为接口函数
public List<Product> filterProductByPredicate(List<Product> list,MyPredicate<Product> mp){
List<Product> prods = new ArrayList<>();
for (Product prod : list){
if (mp.test(prod)){
prods.add(prod);
}
}
return prods;
}
使用lambda表达式进行过滤
@Test
public void test4(){
List<Product> products = filterProductByPredicate(proList, (p) -> p.getPrice() < 8000);
for (Product pro : products){
System.out.println(pro);
}
}
函数式接口
函数式接口的提出是为了给Lambda表达式的使用提供更好的支持。什么是函数式接口?简单来说就是只定义了一个抽象方法的接口(Object类的public方法除外),就是函数式接口,并且还提供了注解: