zoukankan      html  css  js  c++  java
  • java拓展----探秘Lambda 表达式

    目录

      1.关于Lambda表达式

      2.java中的Lambda表达式的特性及语法格式

      3.java中Lambda表达式的实现

      4.总结

    一、关于Lambda表达式

      首先Lambda表达式并不是只有java中才特有的表达式。其他编程语言中同样也拥有这个表达式。Lambda表达式可使程序更简洁。不同语言的Lambda表达式中定义的规范不同。具体需要看官方文档的定义。

    二、java中的Lambda表达式的特性及语法格式

      1.java中的Lambda表达式的特性

        Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。

        Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

        使用 Lambda 表达式可以使代码变的更加简洁紧凑。

      2.Lambda表达式的语法格式

        (parameters) -> expression

        或 (parameters) ->{ statements; }

    三、java中Lambda表达式的实现

      java中如果要使用Lambda表达式的话,首先需要保证您的jdk版本号在1.8之上

      Lambda表达式的普通实现如下。

    package com.demo.java8;
    
    public class Java8Ordinary{
        public static void main(String args[]){
            //创建一个 Lambda 表达式只能用一个借口来接收
            Java8Interface j8i=(int a,int b)->{
                System.out.println(a+b);
            };
            Java8Ordinary j8o = new Java8Ordinary();
            j8o.exec(1, 2, j8i);
        }
        //此方法用来调用接口中用Lambda表达式
        private void exec(int a,int b,Java8Interface j) {
            j.option(a, b);
        }
    }
    /**
     * 此接口用来接收Lambda表达式,接口中只能有一个抽象方法
     * @author HYSong
     *
     */
    interface Java8Interface{
        void option(int a,int b);
    }

      利用Lambda表达式实现线程

    package com.demo.java8;
    /**
     * Lumbda表达式可以实现只有一个方法的接口。
     * @author HYSong
     *
     */
    public class Java8Thread {
        public static void main(String[] args) {
            new Thread(()->{
                System.out.println("Thread is start");
                }) .start();
        }
    }

      利用Lambda表达式遍历集合

    package com.demo.java8;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class Java8Array {
        public static void main(String[] args) {
                //        定义一个数组
                String[] atp = {"Ray", "Zake",
                       "Danier",
                       "Bob","Rose",
                       "Lisa","Tom",
                       "Joy"};
                List<String> players =  Arrays.asList(atp);
                // 使用 lambda 表达式以及函数操作(functional operation)
                players.forEach((player) -> System.out.print(player));
        }
    }

    四、总结

      虽然说jdk的版本越来越高,但是我们实际开发过程中用得到的还是以前的版本。目前一些jdk新特性用到的不是很普及。Lambda模块是jdk8的一个新特性,了解它可以简化我们的代码,方便代码的阅读。这对开发人员来说还是有帮助的。总的来说,Lambda模块定义比较模糊。实际开发中我们可以用Lambda表达式去实现一些只有一个抽象类的接口,这样可使代码更加简洁明了。

    PS:以上内容均为个人理解。如有错误请留言纠正。

  • 相关阅读:
    从a文件判断是否删除b文件中的行(sed示例)
    绝对路径的表示方式为什么是"/usr"而不是"//usr"
    判断ssh远程命令是否执行结束
    彻底搞懂shell的高级I/O重定向
    Resource Agent:LSB和OCF
    流程控制语句(MySQL/MariaDB )
    MySQL/MariaDB中游标的使用
    翻译:DECLARE HANDLER语句(已提交到MariaDB官方手册)
    从集合的无序性看待关系型数据库中的"序"
    MariaDB/MySQL存储过程和函数
  • 原文地址:https://www.cnblogs.com/bananafish/p/10149477.html
Copyright © 2011-2022 走看看