zoukankan      html  css  js  c++  java
  • Java8的Lambda表达式你了解吗?80%的都不知道

     

    五一5天假,说没就没,但是学习的脚本不能停下。

    收假了,我们还是要继续搬砖,学习也不能携带。

    给大家带来一套Java8的秘籍。

    Lambda 表达式是什么

    Lambda 表达式(lambda expression)是一个匿名函数,由数学中的 λ 演算而得名。 在 Java 8 中可以把 Lambda 表达式理解为匿名函数,它没有名称,但是有参数列表、函数主体、返回类型等。
    这里还要注意光理论是不够的,记住:Java架构项目经验永远是核心,如果你没有最新JAVA架构实战教程及大厂30k+面试宝典,可以去小编的Java架构学习.裙 :七吧伞吧零而衣零伞 (数字的谐音)转换下可以找到了,里面很多新JAVA架构项目教程,还可以跟老司机交流讨教! 

    Lambda 表达式的语法如下:

    (parameters) -> { statements; }

    为什么要使用 Lambda 表达式? 前面你也看到了,在 Java 中使用内部类显得十分冗长,要编写很多样板代码,Lambda 表达式正是为了简化这些步骤出现的,它使代码变得清晰易懂。

    如何使用 Lambda 表达式

    Lambda 表达式是为了简化内部类的,你可以把它当成是内部类的一种简写方式,只要是有内部类的代码块,都可以转化成 Lambda 表达式:

    // Comparator排序
    
    List<Integer> list = Arrays.asList(3, 1, 4, 5, 2);
    list.sort(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }
    });

    // 使用Lambda表达式简化
    list.sort((o1, o2) -> o1.compareTo(o2));
    复制代码
    // Runnable代码块
    
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello Man!");
        }
    });

    // 使用Lambda表达式简化
    Thread thread = new Thread(() -> System.out.println("Hello Man!"));
    复制代码

    可以看出,只要是内部类的代码块,就可以使用 Lambda 表达式简化,并且简化后的代码清晰易懂。

    方法引用

    甚至,Comparator 排序的 Lambda 表达式还可以进一步简化:

    list.sort(Integer::compareTo);

    这种写法被称为 「方法引用」,方法引用是 Lambda 表达式的简便写法。 如果你的 Lambda 表达式只是调用这个方法,最好使用名称调用,而不是描述如何调用,这样可以提高代码的可读性。

    方法引用使用 ::分隔符,分隔符的前半部分表示引用类型,后面半部分表示引用的方法名称。 例如: Integer::compareTo表示引用类型为 Integer,引用名称为 compareTo的方法。

    对于 Lambda 表达式到方法引用的简化,我们提供以下规则:

    Lambda 表达式方法引用
    (args) -> ClassName.staticMethod(args) ClassName::staticMethod
    (arg0, ...) -> arg0.instanceMethod(...) ClassName::instanceMethod
    (args) -> expression.instanceMethod(args) expression::instanceMethod

    特别的,对于构造函数的方法引用: ClassName::new

    类似使用方法引用的例子还有打印集合中的元素到控制台中: list.forEach(System.out::println);
    最后要注意:光理论是不够的,记住:Java架构项目经验永远是核心,如果你没有最新JAVA架构实战教程及大厂30k+面试宝典,可以去小编的Java架构学习.裙 :七吧伞吧零而衣零伞 (数字的谐音)转换下可以找到了,里面很多新JAVA架构项目教程,还可以跟老司机交流讨教! 

  • 相关阅读:
    Python IDE
    python 3.x 不再提供raw_print()
    Python代码风格建议(转)
    在JSP页面中输出JSON格式数据
    MyEclipse 10 优化
    MB/GB/TB/PB/EB/ZB/YB/NB/DB/CB存储空间都是多大?如何换算?
    为什么民众不以偷税为耻_岑科
    彻底解剖人民币升值问题_岑科
    script 加载顺序问题的延展研究
    如何快速实现 markdown 转 HTML 文档?
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12836161.html
Copyright © 2011-2022 走看看