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;
    }

}

  

 

posted @ 2022-09-08 22:14  Mr_sven  阅读(35)  评论(0编辑  收藏  举报