学习Java8--Lambda表达式

本文介绍了Java8的Lambda表达式,包括其在比较数组操作中的应用和不同参数类型的使用方式,如一个参数、多个参数、无参数以及表达式块的语法。Lambda表达式简化了代码,使得操作更简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 为什么使用lambda表达式

先看几个Java8之前常用的例子

创建线程并启动(不适用Lambda 表达式)

public class Worker implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            dowork(i);
        }
    }


    private void dowork(int i) {
        System.out.println("thread "+i);
    }


    public static void main(String[] args) {
        Worker worker = new Worker();
        new Thread(worker).start();
    }
}
(使用lambda表达式)
new Thread(() -> {
    for (int i = 0; i < 100; i++) {
        doWork();
    }
}).start();
比较数组

// 定义一个比较器
public  class  LengthComparator  implements  Comparator<String> {
     @Override
     public  int  compare(String first, String second) {
         return  Integer.compare(first.length(), second.length());
     }
}
//对字符数组进行比较
Arrays.sort(words,  new  LengthComparator());

比较数组(采用Lambda版本)
Arrays.sort(words, (first, second) -> Integer.compare(first.length(), second.length())

Lambda表达式的语法

格式:(参数) -> 表达式
其中:

  1. 参数可以为0-n个。如果有多个参数,以逗号(,)分割。如果有一个参数,括号()可以省去;如果没有参数,括号()也不能省去。参数前可以加类型名,但由于自动类型推导功能,可以省去。
  2. 表达式可以是一行表达式,也可以是多条语句。如果是多条语句,需要包裹在大括号{}中。
  3. 表达式不需要显示执行返回结果,它会从上下文中自动推导。

以下是一些例子:

一个参数
event -> System.out.println( "button clicked." )
多个参数
(first, second) -> Integer.compare(first.length(), second.length()
0个参数
() -> System.out.println( "Hello World!" )
表达式块
() -> {
     for  ( int  i =  0 ; i <  100 ; i++) {
         doWork();
     }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值