HHR的小站
享受代码带来的快乐吧
首页
Java lambda特性
2021-02-06 |HHR | 代码使人快乐, 语言的魅力

引言

一直以来,Java有一个为人所不满的缺点:啰嗦。有些简单的东西,可能需要撰写更多代码才能完成。
幸好,Java为我们推出了很多新功能,来解决其中的问题。本文主要想介绍Java8的lambda表达式。

lambda

之前的版本

先来看这么一串代码

        String[] name = {"Mike", "Tom", "Jerry", "Potty", "Moggy"};
        Arrays.sort(name, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });

有五个小朋友,他们有不同的名字。我们希望按照字母的顺序为其排序。按照Java7的写法,我们需要完成一个Comparator接口,并实现其中的compare方法。以完成排序。

使用lambda的写法

使用IDEA的朋友们可能发现,之前的代码被标为了黄色。IDEA会将你的代码改成这样

Arrays.sort(name, (o1, o2) -> o1.compareTo(o2));

原本的compare函数消失了,变成了 (o1, o2) -> o1.compareTo(o2)。这是怎么回事呢?

什么是lambda

其实这就是lambda表达式,Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。
(o1, o2) -> o1.compareTo(o2)意为,传入了o1,o2两个参数,将 o1.compareTo(o2) 的值作为返回值。简单的语法就完成了原本五六行代码的工作量。

还能更简单吗?

能!如果使用Java8的另外一个特性,方法引用,撰写的代码量会更少。有关方法引用的使用,我会在之后的文章里进行介绍。

lambda的更多示例

启动子线程

new Thread(() -> System.out.println("Hello World")).start();

等价于

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello World");
            }
        }).start();

显而易见,使用lambda语句,可以使代码更为简洁。

respond-post-509

添加新评论

请填写称呼
请填写合法的电子邮箱地址
请填写合法的网站地址
请填写内容