【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个一起省略,缺一不可
 * 
 * */

猜你喜欢

转载自blog.csdn.net/dyt998/article/details/113482277
今日推荐