欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-01 21:21:01
...

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

 

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

©Copyright 蕃薯耀 2021-04-15

https://blog.csdn.net/w995223851

 

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;

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

优点:
1、代码简洁,简化操作

缺点:
1、有时候简洁到看不懂
2、必须要记得接口实现的方法和参数
3、开发人员未大量使用,如果工作交接给别人,别人或许看不懂,不利于团队开发

Java Lambda 表达式基本语法:

() -> {}

其中:

():括号表示参数

{}:表示代码块

 *
 */
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://blog.csdn.net/w995223851