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:以上内容均为个人理解。如有错误请留言纠正。

  • 相关阅读:
    HDU 1501 Zipper(DFS)
    HDU 2181 哈密顿绕行世界问题(DFS)
    HDU 1254 推箱子(BFS)
    HDU 1045 Fire Net (DFS)
    HDU 2212 DFS
    HDU 1241Oil Deposits (DFS)
    HDU 1312 Red and Black (DFS)
    HDU 1010 Tempter of the Bone(DFS+奇偶剪枝)
    HDU 1022 Train Problem I(栈)
    HDU 1008 u Calculate e
  • 原文地址:https://www.cnblogs.com/bananafish/p/10149477.html
Copyright © 2011-2022 走看看