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/

posted @ 2021-04-15 10:17  蕃薯耀  阅读(144)  评论(1编辑  收藏  举报