Java SE | 高级特性 | Lambda表达式

概述

  • Lambda表达式,也称闭包,Java8新特性之一
  • Lambda表达式是一个可传递的代码块
  • Lambda表达式使代码变得简洁紧凑
  • 用逗号分隔的参数列表–>函数体三部分表示。如果代码要完成的计算无法放在一个表达式中,就可以像写方法一样,把这些代码放在 {}中, 并包含显式的 return语句。
(String first, String second) -> 
	{ 
		if (first.length() < second.length()) return -1;
		else if (first.length() > second.length()) return 1; 
		else return 0; 
	} 

语法

(parameters参数) -> expression 表达式
或(parameters) ->{ statements声明; }

示例

  • 循环遍历
public class LambdaForeach {
    public static void main(String[] args) {
        // 旧的遍历
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
        for (Integer n : list) {
            System.out.print(n);
        }

        System.out.println("\n--------");
        // Lambda表达式
        List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
        list1.forEach(System.out::print);
    }
}

结果:
1234567
1234567

  • 创建线程
public class LambdaThread {
    public static void main(String[] args) {
        // 旧方式创建线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("新的线程...");
            }
        }).start();
        // Lambda表达式创建
        new Thread(() -> System.out.println("新的线程...")).start();
    }
}

注意

  • 即使 lambda表达式没有参数,仍然要提供空括号,就像无参数方法一样:
() -> { for (inti = 100;i >= 0;i ) System.out.println(i); }
  • 如果可以推导出一个 lambda 表达式的参数类型,则可以忽略其类型。
Comparator<String> comp 
	= (first, second) 
		-> first.length() - second.length(); 

编译器可以推导出 first 和 second 必然是字符串,因为这个 lambda 表达式将赋 给一个字符串比较器

  • 如果方法只有一个参数,而且这个参数的类型可以推导得出,那么甚至还可以省略小括号:
ActionListener listener = event -> 
	System.out.println("The time is " + new Date()");
  • 无需指定 lambda 表达式的返回类型。lambda 表达式的返回类型总是会由上下文推导得出。
(String first, String second) -> first.length() - second.length()

上下文中需要int结果时可以使用它

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值