Lambda表达式
1.Lambda表达式的本质:作为函数式接口的实例
2.格式:
->:Lambda操作符 或 箭头操作符
->左边:Lambda形参列表(接口中抽象方法的形参列表)
->右边:Lambda体(重写的抽象方法的方法体)
3.Lambda表达式的使用:
->左边:Lambda形参列表的参数类型可以省略:如果Lambda形参列表只有1个参数,其一对()也可以省略。
->右边:Lambda体使用一对{}包裹,如果Lambda体只有一条执行语句(可能时return语句),可以省略{}及return关键字
函数式接口(只有一个抽象方法的接口)
public class LambdaTest { @Test public void test() { MyInterface mi = new MyInterface() { @Override public String method(String arg) { return arg; } }; String str = mi.method("java学习中。"); System.out.println(str); //lambda表达式的方式 MyInterface mi2 = s -> s; String str2 = mi2.method("java学习中。"); System.out.println(str2); } @Test public void test2() { List<String> list = Arrays.asList("a", "bb", "ccc", "dddd"); List<String> list1 = filterString(list, new Predicate<String>() { @Override public boolean test(String s) { return s.length() > 2; } }); System.out.println(list1);//[ccc, dddd] //lambda表达式的方式 List<String> list2 = filterString(list, s -> s.length() > 2); System.out.println(list2); } public List<String> filterString(List<String> list, Predicate<String> pre) { List<String> list1 = new ArrayList<>(); for (String s : list) { if (pre.test(s)) { list1.add(s); } } return list1; } }