Lambda表达式的讲解

import java.util.Comparator;
import java.util.TreeSet;

import org.junit.Test;

/*
*

  • 此类用于演示Lambda表达式的理解和好处和应用场景
  • 一、理解
  • Lambda表达式可以理解为一段可以传递的代码,像数据一样传递给方法或构造器的参数
  • 实际上,Lambda表达式是匿名内部类的一种简化或代替
  • 能用Lambda表达式的地方,肯定能用匿名内部类!
  • 但能用匿名内部类的地方,不一定能用Lambda表达式,除非满足以下条件:
  •  该接口或抽象类中只有一个抽象方法
    
  • 二、好处
  • 代码简化、更加灵活、紧凑!
  • 三、应用场景
  • 同匿名内部类
  • 1、当做实参传递给构造器或方法 ★
  • method(Lambda表达式);
  • public void method(LiSh ls){
  • ls.s();
  • }
  • 2、直接赋值给接口,当做对象

*LiSh ls = Lambda表达式;
*
*

  • 四、语法:
  • (参数类型 参数名,参数类型 参数名)-> {Lambda体}
  • 语法注意事项:
  • 1、左侧的参数类型可以省略
  • 2、当左侧只有一个参数,则小括号也可以省略
  • 3、当右侧Lambda体只有一句话,则大括号可以省略
  • 4、当右侧Lambda体只有一句return,则return可以省略

*/

public class TestLambda1 {
//测试语法1:完整语法
@Test
public void test1() {
//使用匿名内部类
TreeSet set = new TreeSet<>(new Comparator() {

		@Override
		public int compare(String o1, String o2) {
			System.out.println("好好学习");
			return o1.compareTo(o2);
		}}) ;
	
	//使用Lambdda表达式
	TreeSet<String> set2  = new TreeSet<>((String o1, String o2)->{
		System.out.println("好好学习");
		return o1.compareTo(o2);}) ;
}

//测试语法2:简化语法 :参数类型可以省略
@Test 
public void test2() {
	//使用匿名内部类
	TreeSet<String> set  = new TreeSet<>(new Comparator<String>() {

		@Override
		public int compare(String o1, String o2) {
			System.out.println("好好学习");
			return o1.compareTo(o2);
		}}) ;
	
	//使用Lambdda表达式
	TreeSet<String> set2  = new TreeSet<>(( o1,  o2)->{
		System.out.println("好好学习");
		return o1.compareTo(o2);}) ;
}


//测试语法2:简化语法 :当只有一个参数,则小括号可以省略
@Test 
public void test3() {
	//使用匿名内部类
	Comparable<Integer>  com = new Comparable<Integer>() {
		
		@Override
		public int compareTo(Integer o) {
			return 0;
		}
	};
	
	//使用Lambda表达式
	Comparable<Integer>  com2 = o->{return 0;};
	
	
	

}

//测试语法3:简化语法 :当右侧只有一句话,则大括号可以省略,而且如果仅有的一句话为reurn语句,则return可以省略
	@Test 
	public void test4() {
		//使用匿名内部类
		Comparable<Integer>  com = new Comparable<Integer>() {
			
			@Override
			public int compareTo(Integer o) {
				return 0;
			}
		};
		
		//使用Lambda表达式
		Comparable<Integer>  com2 = o-> 0;
		
		
		

	}
	
	//测试语法5:简化语法
	@Test 
	public void test5() {

// //使用匿名内部类
// Runnable run1 = new Runnable() {
// @Override
// public void run() {
// System.out.println(“跑”);
//
// }
// };
//
//使用Lambda表达式

		Runnable run2 = ()->System.out.println("跑");
		
		run2.run();
	}



@Test 
public void test() {

// Thread t = new Thread(new Runnable() {
//
// @Override
// public void run() {
// System.out.println(“我要跑啊跑,哈哈哈”);
//
// }
//
//
// });
// t.start();

	//使用Lambda
	Thread t = new Thread(()->System.out.println("我要跑啊跑,哈哈哈"));
	t.start();
	
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值