zoukankan      html  css  js  c++  java
  • Java Lambda 表达式,Java Lambda 函数接口

    Java Lambda 表达式,Java Lambda 函数接口

    ================================

    ©Copyright 蕃薯耀 2021-04-15

    https://www.cnblogs.com/fanshuyao/

    lambda表达式允许你通过表达式来代替功能接口,该接口只能有一个要实现的方法。

    优点:

    1、代码简洁,简化操作

    缺点:

    1、有时候简洁到看不懂

    2、必须要记得接口实现的方法和参数

    3、开发人员未大量使用,如果工作交接给别人,别人或许看不懂,不利于团队开发

    一、Java Lambda 表达式基本语法:

    () -> {}

    其中:

    ():括号表示参数

    {}:表示代码块

    1、parameter -> expression

    单个参数,可以省略括号

    代码块只有一个表达式,可以省略大括号(有返回时,同时省略return )

    2、(parameter1, parameter2, …) -> expression

    多个参数,不能省略括号

    代码块只有一个表达式,能省略大括号

    无返回时:

    带大括号:

    (parameter1, parameter2, …) -> {expression}

    有返回时:

    带大括号:

    (parameter1, parameter2, …) -> {return expression}

    3、(parameter1, parameter2, …) ->{ expression1; expression2; return result; }

    多个参数,不能省略括号

    代码块有多人表达式,不能省略大括号,有返回时,也不能省略return 

    4、类或对象 :: 方法

    Integer :: compare

    System.out :: println

    二、Java Lambda 表达式使用具体示例:

    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import java.util.function.Consumer;
    
    public class Lambda {
    
        
        public static void lambda() {
            Runnable r1 = new Runnable() {
                
                @Override
                public void run() {
                    System.out.println("Runnable");
                }
            };
            
            r1.run();//不是start方法,即不是线程调用,而是调用方法
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:r2");
            Runnable r2 = () -> {System.out.println("Runnable");};
            r2.run();
            System.out.println("===Lambda表达式结束。");
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:r3");
            Runnable r3 = () -> System.out.println("Runnable");
            r3.run();
            System.out.println("===Lambda表达式结束。");
            
        }
        
        
        public static void comparator() {
            Comparator<Integer> c1 = new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o1.compareTo(o2);
                }
            };
            
            System.out.println(c1.compare(1, 2));
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:c2");
            Comparator<Integer> c2 = (Integer o1, Integer o2) -> {return o1.compareTo(o2);};
            System.out.println(c2.compare(3, 2));
            System.out.println("===Lambda表达式结束。");
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:c3");
            Comparator<Integer> c3 = (o1, o2) -> o1.compareTo(o2);
            System.out.println(c3.compare(5, 5));
            System.out.println("===Lambda表达式结束。");
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:c4");
            Comparator<Integer> c4 = Integer :: compare;
            System.out.println(c4.compare(5, 5));
            System.out.println("===Lambda表达式结束。");
            
        }
        
        
    
        public static void foreach() {
            List<String> list = new ArrayList<>();
            list.add("aa");
            list.add("bb");
            list.add("cc");
            list.add("dd");
            
            
            list.forEach(new Consumer<String>() {
                @Override
                public void accept(String t) {
                    System.out.println(t);
                }
            });
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:f1");
            list.forEach((String t) -> {System.out.println(t);});
            System.out.println("===Lambda表达式结束。");
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:f2");
            list.forEach(t -> System.out.println(t));
            System.out.println("===Lambda表达式结束。");
            
            System.out.println("");
            System.out.println("===Lambda表达式开始:f3");
            list.forEach(System.out :: println);
            System.out.println("===Lambda表达式结束。");
            
        }
        
        
        public static void main(String[] args) {
            //lambda();
            //comparator();
            foreach();
        }
    }

    ================================

    ©Copyright 蕃薯耀 2021-04-15

    https://www.cnblogs.com/fanshuyao/

    今天越懒,明天要做的事越多。
  • 相关阅读:
    scrapy+pymongo爬取小说实战
    Scrapy的正确安装
    linux: 用户管理,文件传送
    Java日期时间处理总结
    Numpy快速入门
    python 文件与文件夹操作
    python文件基础
    26. 删除排序数组中的重复项
    1两数之和
    152乘积最大子数组
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/14661279.html
Copyright © 2011-2022 走看看