在 Java 中,Lambda 表达式(Java 8 引入)的核心目的就是用更简洁的方式表示“函数式接口”的实现,从而大幅简化代码,尤其是匿名内部类、回调、集合操作等场景。
下面从常见场景 + 对比示例来说明 Lambda 如何简化代码。
传统写法(匿名内部类)
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("hello");
}
}).start();
Lambda 简化后
new Thread(() -> System.out.println("hello")).start();
✅ 少写了 new Runnable、@Override、run()
传统写法
List<String> list = Arrays.asList("a", "b", "c");
for (String s : list) {
System.out.println(s);
}
Lambda 写法
list.forEach(s -> System.out.println(s));
更简化(方法引用)
list.forEach(System.out::println);
传统写法
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = new ArrayList<>();
for (Integer n : nums) {
if (n % 2 == 0) {
result.add(n * 2);
}
}
Lambda + Stream
List<Integer> result =
nums.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * 2)
.collect(Collectors.toList());
✅ 代码更短、语义更清晰(做什么,而不是怎么做)
传统写法
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return a.length() - b.length();
}
});
Lambda 写法
list.sort((a, b) -> a.length() - b.length());
方法引用(更优雅)
list.sort(Comparator.comparingInt(String::length));
传统写法
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("clicked");
}
});
Lambda 写法
button.addActionListener(e -> System.out.println("clicked"));
@FunctionalInterface
interface MyFunc {
void run();
}
(a, b) -> a + b
{} 和 returnx -> x * 2
⚠️ 以下情况要谨慎:
✔️ 复杂逻辑 → 抽成方法 + 方法引用
Lambda = 用“行为参数化”替代“样板代码”,让 Java 更短、更清晰、更函数式。
如果你有具体代码场景(比如 Stream、Optional、回调、Spring 等),我可以直接帮你改写成 Lambda 版本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。