学习Java8--Lambda表达式

来源:互联网 发布:2016欧洲杯数据 编辑:程序博客网 时间:2024/05/22 01:41

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();
    }
}



原创粉丝点击