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更具有函数式编程的特性。
