Lambda表达式的本质:作为函数式接口的实例
如果一个接口中,只声明一个抽象方法,则此接口就称为函数式接口
@FunctionalInnterface
public interface MyInterface{
void method1();
}
要想用Lambda表达式就一定要在函数式接口的条件下使用
相当于函数式接口的实例就是Lambda表达式
我们可以用@FunctionalInnterface
注解来检验它是不是一个函数式接口
java内置的函数式接口
java内置的四大核心函数式接口
Consumer void accept(T t)
Supplier T get()
Function<T,R> R apply(T t)
Predicate boolean test(T t)
@Test
public void test6(){
List<String> list = Arrays.asList("中国","美国","加拿大","日本","巴西","巴基斯坦","巴勒斯坦","巴拿马");
List<String> stringList = filterString(list, new Predicate<String>() {
@Override
public boolean test(String s) {
return s.contains("巴");
}
});
System.out.println("包含有:"+stringList);
}
//根据给定的规则,过滤集合中的字符串,此规则由Predicate的方法决定的
public List<String> filterString(List<String> list, Predicate<String> pre){
ArrayList<String> filterList = new ArrayList<>();
for (String s:list) {
if(pre.test(s)){
filterList.add(s);
}
}
return filterList;