JDK8新特性-函数式接口
函数式接口
一、什么是函数式接口?
只包含一个抽象方法的接口,称为函数式接口。
我们可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检 查它是否是一个函数式接口。
Lambda表达式就是一个函数式接口的实例。
所以以前用匿名实现类表示的现在都可以用Lambda表达式来写
二、java内置的4大核心函数式接口
public class FuncInterfaceTest {
@Test
public void test1(){
happyTime(500, money -> System.out.println("花费了" + money + "元"));
}
public void happyTime(double money, Consumer con){
con.accept(money);
}
@Test
public void test2(){
List list = Arrays.asList("北京", "南京", "天津", "东京");
List result = filterString(list, s -> s.contains("京"));
Iterator iterator = result.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
//根据给定的规则,过滤集合中的字符串。此规则由Predicate的方法决定
public List filterString(List list, Predicate pre){
ArrayList filterList = new ArrayList<>();
for (String s : list) {
if (pre.test(s)){
filterList.add(s);
}
}
return filterList;
}
}