【4】Lambda的练习 Lambda的省略

给定一个厨子 Cook 接口,内含唯一的抽象方法 makeFood
请使用 Lambda 标准格式 调用 invokeCook 方法,打印输出 吃饭啦! 字样
public interface Cook {
	public abstract void makefood();
}
public class Demo {
	public static void main(String[] args) {
		//原始的方式是:调用invokeCook方法,传递参数Cook对象,重写makefood方法
		invokCook(new Cook(){
			@Override
			public void makefood(){
				System.out.println("吃饭啦");
			}
		});
		
		//使用Lambda表达式。使用格式直接传递要输出的字样
		invokCook(()->{
			
			System.out.println("Lambda吃饭啦");
		});
	}
	
	public static void invokCook(Cook cook){
		cook.makefood();
	}
}

需求 :
  1. 使用数组存储多个Person对象
  2. 对数组中的Person对象使用Arrayssort方法通过年龄进行升序排序
public class Sort {
	public static void main(String[] args) {
		Person[] p = {
				new Person("张三",38),
				new Person("李四",14),
				new Person("王五",25)
		};
		
		//普通方式 调用数组的sort方法,参数new 一个Comparator重写compare方法 参数前面-后面是升序
		Arrays.sort(p,new Comparator<Person>() {
			@Override
			public int compare(Person o1, Person o2) {
				return o1.getAge()-o2.getAge();
			}
		});
		//遍历数组
		for (Person person : p) {
			System.out.println(person);
		}
		
		System.out.println("-----------------------");
		//使用Lambda表达式,传入数组,和参数直接return
		Arrays.sort(p, (Person o1, Person o2)->{
			return o1.getAge()-o2.getAge();
		});
		for (Person person : p) {
			System.out.println(person);
		}
		
		System.out.println("----------------");
		//简略Lambda
		Arrays.sort(p, (o1,o2)->{
			return o1.getAge()-o2.getAge();
		});
		for (Person person : p) {
			System.out.println(person );
		}
	}
}

给定一个计算器 Calculator 接口,内含抽象方法 calc 可以将两个 int 数字相加得到和值

 

public class Sum {
	public static void main(String[] args) {
		//普通方式调用 :匿名内部类
		invokeCalc(10, 20, new Calculator(){
			@Override
			public int sum(int a, int b) {
				return a+b;
			}
		});
		
		//Lambda表达式调用
		invokeCalc(120, 130, (int a,int b)->{
			return a+b;
		});
	}
		/*
    	定义一个方法
    	参数传递两个int类型的整数
    	参数传递Calculator接口
    	方法内部调用Calculator中的方法calc计算两个整数的和
		 */
	public static void invokeCalc(int a,int b,Calculator c){
		int sum = c.sum(a, b);
		System.out.println(sum);
	}
}

Lambda表达式注意

/*
 * Lambda表达式:是可以推导,可以省略
 * 凡是根据上下文推导出来的内容,都可以省略书写
 * 可以省略内容:
 * 	1.(参数列表):括号中参数列表的数据类型,可以省略不写
 * 	2.(参数列表): 括号中的参数如果只有一个,那么类型和()都可以省略不写
 * 	3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略{},return,分号 并且3个一起省略,缺一不可
 * 
 * */

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值