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/

    今天越懒,明天要做的事越多。
  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/14661279.html
Copyright © 2011-2022 走看看