• java8 lamda快速入门


    Lambda语法详解

    我们在此抽象一下lambda表达式的一般语法:

    1 (Type1 param1, Type2 param2, ..., TypeN paramN) -> {
    2   statment1;
    3   statment2;
    4   //.............
    5   return statmentM;
    6 }

    从lambda表达式的一般语法可以看出来,还是挺符合上面给出的非精确版本的定义–“一段带有输入参数的可执行语句块”。

    上面的lambda表达式语法可以认为是最全的版本,写起来还是稍稍有些繁琐。别着急,下面陆续介绍一下lambda表达式的各种简化版:

    1. 参数类型省略–绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型。这样lambda表达式就变成了:

    1 (param1,param2, ..., paramN) -> {
    2   statment1;
    3   statment2;
    4   //.............
    5   return statmentM;
    6 }

    所以我们最开始的例子就变成了(省略了List的创建):

    1 List<String> lowercaseNames = names.stream().map((name) -> {return name.toLowerCase();}).collect(Collectors.toList());

    2. 当lambda表达式的参数个数只有一个,可以省略小括号。lambda表达式简写为:

    1 param1 -> {
    2   statment1;
    3   statment2;
    4   //.............
    5   return statmentM;
    6 }

    所以最开始的例子再次简化为:

    1 List<String> lowercaseNames = names.stream().map(name -> {return name.toLowerCase();}).collect(Collectors.toList());

    3. 当lambda表达式只包含一条语句时,可以省略大括号、return和语句结尾的分号。lambda表达式简化为:

    1 param1 -> statment

    所以最开始的例子再次简化为:

    1 List<String> lowercaseNames = names.stream().map(name -> name.toLowerCase()).collect(Collectors.toList());

    4. 使用Method Reference(具体语法后面介绍)

    1 //注意,这段代码在Idea 13.0.2中显示有错误,但是可以正常运行
    2 List<String> lowercaseNames = names.stream().map(String::toLowerCase).collect(Collectors.toList());

    方法引用有很多种,它们的语法如下:

    • 静态方法引用:ClassName::methodName
    • 实例上的实例方法引用:instanceReference::methodName
    • 超类上的实例方法引用:super::methodName
    • 类型上的实例方法引用:ClassName::methodName
    • 构造方法引用:Class::new
    • 数组构造方法引用:TypeName[]::new

    参考文献:

    【1】http://ifeve.com/lambda/

  • 相关阅读:
    算法-第四版-练习1.3.2解答
    彻底理解线索二叉树(转载)
    C/C++——C++中new与malloc的10点区别(转载)
    C语言中的struct和typedef struct(转载)
    C语言实现贪吃蛇
    C语言实现2048小游戏
    案例开发准备
    WordCount单词计数
    MapReduce原理与实现
    HDFS简介
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6180819.html
Copyright © 2020-2023  润新知