Lambda表达式

1.Lambda表达式的本质:作为函数式接口的实例

2.格式:

->:Lambda操作符 或 箭头操作符

->左边:Lambda形参列表(接口中抽象方法的形参列表)

->右边:Lambda体(重写的抽象方法的方法体)

3.Lambda表达式的使用:

->左边:Lambda形参列表的参数类型可以省略:如果Lambda形参列表只有1个参数,其一对()也可以省略。

->右边:Lambda体使用一对{}包裹,如果Lambda体只有一条执行语句(可能时return语句),可以省略{}及return关键字

 

函数式接口(只有一个抽象方法的接口)

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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 @   iTao0128  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示