- Lambda 表达式允许把函数作为一个方法的参数传递,使用 Lambda 表达式可以使得代码变得更加简洁紧凑。
语法格式
(parameters) -> expression
(parameters) ->{ statements; }
parameters
表示一个或多个参数,如果只有一个参数,可以省略括号;但是如果没有参数,需要加空括号。expression
或{ statements; }
是Lambda 表达式的主体,即执行的函数。- 代码示例如下,
HashMap
中的merge()
方法可以参考Java HashMap中的merge()方法。下面的代码通过 Lambda 表达式向merge()
方法中传入了一个参数为a
和b
,返回值为a+b
的函数方法。
public class Test {
public static void main(String[] args) {
HashMap<String, Integer> prices = new HashMap<>();
prices.put("Shoes", 200);
prices.put("Bag", 100);
System.out.println(prices);
System.out.println();
int returnValue = prices.merge("Shirts", 100, (oldValue,newValue)->oldValue+newValue);
System.out.println(returnValue);
System.out.println(prices);
System.out.println();
int bag = prices.merge("Bag", 50, (a, b) -> a + b);
System.out.println(bag);
System.out.println(prices);
}
}
重要特征
简洁性
Lambda 表达式提供了一种更为简洁的语法,尤其适用于函数式接口。相比于传统的匿名内部类,Lambda 表达式使得代码更为紧凑,减少了样板代码的编写。
public class Test {
public static void main(String[] args) {
// 传统的匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello World!");
}
}).start();
// 使用 Lambda 表达式
new Thread(()-> System.out.println("Hello World!")).start();
}
}
支持函数式编程
Lambda 表达式是函数式编程的一种体现,它允许将函数当作参数传递给方法,或者将函数作为返回值,这种支持使得 Java 在函数式编程方面更为灵活,能够更好地处理集合操作、并行计算等任务。
public class Test {
public static void main(String[] args) {
// 使用 Lambda 表达式作为参数传递给方法
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name));
}
}
方法引用
Lambda 表达式可以通过方法引用进一步简化,方法引用允许你直接引用现有类或对象的方法,而不用编写冗余的代码。
public class Test {
public static void main(String[] args) {
// 使用方法引用
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(System.out::println);
}
}