查看原文
其他

JDK8新特性之Lambda表达式

2017-10-01 javastack Java技术栈


什么是Lambda表达式

Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。

Lambda语法

一行执行语句的写法:

  1. (parameters) -> expression

如果有多行执行语句,可以加上 {}

  1. (parameters) -> { statements; }

如:

  1. public int add(int x, int y) {

  2.    return x + y;

  3. }

转换成Lambda表达式有以下几种写法:

  1. // 指定参数类型及return

  2. (int x, int y) -> { return x + y; }

  3. // 指定参数类型,不指定return

  4. (int x, int y) -> x + y;

  5. // 不指定参数类型和return,编译器会自动推断

  6. (x, y) -> x + y;

Lambda用途

1、只有一个抽象方法的函数式接口

Lambda表达式的目标类型是函数式接口,什么是函数式接口之后会讲。

下面拿创建线程来举例,用lambda表达式可以有以下几种写法。

  1. public static void main(String[] args) {

  2.    new Thread(new Runnable() {

  3.        @Override

  4.        public void run() {

  5.            System.out.println("t1");

  6.        }

  7.    }).start();

  8.    Runnable runnable = () -> System.out.println("t2");

  9.    new Thread(runnable).start();

  10.    new Thread(() -> System.out.println("t3")).start();

  11.    new Thread(() -> run("t4")).start();

  12.    new Thread(() -> {

  13.        String str = "t5";

  14.        System.out.println(str);

  15.    }).start();

  16. }

  17. private static void run(String str) {

  18.    System.out.println(str);

  19. }

最后输出:

  1. t1

  2. t2

  3. t3

  4. t4

  5. t5

2、集合批量操作

下面打印list集合的两种写法是等价的。

  1. List<String> list = Arrays.asList("a","b","c");

  2. for(String str : list){

  3.    System.out.println(str);

  4. }

  5. list.forEach((e) -> System.out.println(e));

3、流操作

下面是流查询list集合中等于 "a"的数量。

  1. list.stream().filter((e) -> "a".equals(e)).count();

更多的Lambda表达式及关于流更多内容之后陆续会讲到。

推荐阅读



什么是Spring Boot?

Spring Boot开启的2种方式

Spring Boot Starters启动器

Spring Boot定制启动图案

Spring Boot核心配置

Spring Boot功能实战

Spring Boot自动配置原理、实战

Spring Boot Runner启动器

Spring Boot - Profile不同环境配置


看完有没有收获?

分享到朋友圈给更多的人吧。




  Java技术栈  
微信公众号:「Javastack

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。


 ▼长按二维码关注我们↓↓↓




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存