欢迎访问宙启技术站
智能推送

Java匿名函数的使用及示例代码

发布时间:2023-06-21 03:02:53

Java中匿名函数又称为Lambda表达式,是Java 8中的新特性之一。它的出现提高了代码的简洁度和可读性,让Java更具有函数式编程的风格。本文主要介绍Java中匿名函数的使用及示例代码。

首先定义一个函数式接口:

@FunctionalInterface
interface MyFunctionalInterface {
    void doSomething(String s);
}

在Java中,Lambda表达式的语法格式如下:

(parameter1, parameter2, …) -> expression

其中,参数可以省略其类型,或者使用Java8自动推断类型的方式。箭头左侧为参数列表,箭头右侧为执行语句。

下面是使用Lambda表达式的一个示例:

public class LambdaDemo {
    public static void main(String[] args) {
        // 传统的方式
        MyFunctionalInterface myLambda = new MyFunctionalInterface() {
            @Override
            public void doSomething(String s) {
                System.out.println(s);
            }
        };
        myLambda.doSomething("Hello World!");

        // 使用Lambda表达式
        MyFunctionalInterface myLambda2 = (s) -> System.out.println(s);
        myLambda2.doSomething("Hello World!");

        // 参数类型可以省略,Java8会自动推断参数类型
        MyFunctionalInterface myLambda3 = (s) -> {
            s += "!!!";
            System.out.println(s);
        };
        myLambda3.doSomething("Hello World");

        // 可以省略方法体大括号
        MyFunctionalInterface myLambda4 = s -> System.out.println(s);
        myLambda4.doSomething("Hello World!");
    }
}

在上面的示例代码中,我们定义了一个函数式接口MyFunctionalInterface,并使用传统的方式实现了该接口。然后使用Lambda表达式,将该接口实例化,并调用其方法。Lambda表达式省略了参数类型,并且可以省略方法体的大括号。

Lambda表达式和传统方式实现的效果是一样的,但是Lambda表达式更简洁易读。

除了Lambda表达式可以用于函数式接口的实现,它还可以被用在各种场景中,例如:集合的筛选、排序和映射等等。

下面是Lambda表达式用于集合排序的示例代码:

public class LambdaSortDemo {
    public static void main(String[] args) {

        List<String> names = new ArrayList<>();
        names.add("Bob");
        names.add("Alice");
        names.add("Paula");
        names.add("David");

        // 传统的方式
        Collections.sort(names, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);
            }
        });
        System.out.println(names);

        // 使用Lambda表达式
        Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
        System.out.println(names);
    }
}

可以发现,Lambda表达式不仅更简洁,而且更符合函数式编程的风格。

通过以上的示例代码,我们可以发现,Lambda表达式在Java编程中具有重要的作用。它可以提高代码的可读性和简洁性,让Java更具有函数式编程的特性。