Lambda表达式简介

格式

service.submit(() -> System.out.println(Thread.currentThread().getName())); 

/*
    () -> System.out.println(Thread.currentThread().getName())
    Lambda表达式
    
    () 参数列表
    -> 做什么事情,就是对应方法体
    箭头之后的代码就是正常语句
    
    (参数列表) -> {代码语句}
*/

Lambda表达式使用,无参数无返回值

*
 * 无参数无返回值
 */

interface Cook {
	void cooking();
}

public class Demo1 {
	public static void main(String[] args) {
		invokeCook(new Cook() {
			
			@Override
			public void cooking() {
				System.out.println("麻辣香锅,孜然肉片,土豆牛肉,蒜薹肉丝");
			}
		});
		
		invokeCook(() -> {
			System.out.println("蒜蓉油麦菜,番茄鸡蛋");
		});
		
		invokeCook(() -> System.out.println("明天早上自己炸油条"));
	}
	
	/**
	 * 执行Cook实现类对象方法
	 * 
	 * @param cook Cook接口的实现类对象
	 */
	public static void invokeCook(Cook cook) {
		cook.cooking();
	}
}

Lambda表达式使用,有参数有返回值

import java.util.Arrays;
import java.util.Comparator;

public class Demo2 {
	public static void main(String[] args) {
		Person[] persons = {
				new Person("骚磊", 16),
				new Person("老黑", 50),
				new Person("老付", 40),
				new Person("污云", 35),
				new Person("朋朋", 14),
				new Person("大哥", 18),
		};
		
		// public static <T> void sort(T[] a, Comparator<? super T> c)
		Arrays.sort(persons, new Comparator<Person>() {

			@Override
			public int compare(Person o1, Person o2) {
				return o1.getAge() - o2.getAge();
			}
		});
		
		/*
		 * 1. 有参数
		 * 2. 有返回值
		 * 
		 * (Person o1, Person o2) -> {
		 * 		return o1.getAge() - o2.getAge();
		 * }
		 * 标准Lambda
		 */
		Arrays.sort(persons, (Person o1, Person o2) -> {
			return o2.getAge() - o1.getAge();
		});
		
		/*
		 * 1. 这里可以省略数据类型
		 * 2. 可以直接利用返回值,{}和return都省了掉
		 */
		Arrays.sort(persons, (o1, o2) -> o2.getAge() - o1.getAge());
		
		for (Person person : persons) {
			System.out.println(person);
		}
	}
}

Lambda表达式使用前提:

1. 有且只有一个缺省属性为public abstract方法的接口,例如 Comparator<T>接口,Runnable接口
2. 使用lambda表达式是有一个前后要求约束的
    方法的参数为接口类型,或者说局部变量使用调用方法,可以使用lambda也OK
3. 有且只有一个抽象方法的接口,称之为【函数式接口】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值