7.22Java之Lambda表达式练习
使用Lmabda表达式定义一个无参数无返回值的方法
定义一个接口:
package PracticeReview.Lambda;
/**
* 定义一个接口,内含唯一一个抽象方法makeFood
* @since JDK 1.8
* @date 2021/07/22
* @author Lucifer
*/
public interface Cook {
//定义无参数无返回值的方法
public abstract void makeFood();
}
使用Lambda表达式对该接口进行实现:
package PracticeReview.Lambda;
/**
* Cook接口的测试类
* @since JDK 1.8
* @date 2021/07/22
* @author Lucifer
*/
public class CookDemoNo1 {
public static void main(String[] args) {
//调用invokeCook方法,参数是Cook接口,可以传递Cook接口的引用
invokeCook(new Cook() {
Lambda表达式的参数和返回值
需求:
使用数组存储多个Person对象
对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序
Answer
package PracticeReview.Lambda;
import java.util.Arrays;
import java.util.Comparator;
/**
* 根据需求写代码
* 需求:
* 使用数组存储多个Person对象
* 对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序
* @since JDK 1.8
* @date 2021/07/23
* @author Lucifer
*/
public class ArraysDemoNo1 {
public static void main(String[] args) {
//使用数组存储多个Person对象
Person[] arr = {
new Person("柳岩", 18),
new Person("迪丽热巴", 19),
new Person("古力娜扎", 20)
};
//对数组中的Person对象使用Arrays的sort方法通过年龄进行升序(前边-后边)排序
/*
sort方法的传参是前面传一个数组后面传一个Comparator对象
Comparator是一个接口,使用匿名内部类对其进行重写
*/
// Arrays.sort(arr, new Comparator<Person>() {
// @Override
// public int compare(Person o1, Person o2) {
// return o1.getAge() - o2.getAge();
// }
// });
//使用Lambda表达式简化匿名内部类
Arrays.sort(arr, (Person o1, Person o2) -> {
return o1.getAge() - o2.getAge();
});
//遍历数组
for (Person p : arr) {
System.out.println(p);
}
}
}
Lambda表达式的参数和返回值练习2
需求:
给定一个计算器`Calculator`接口,内含抽象方法`calc`可以将两个int数字相加得到和值
使用Lambda表达式的标准格式调用`invokeCalc`方法,完成120和130的相加计算--->该方法传递两个整数和一个接口,里面通过接口中的方法计算两个整数的和并且输出
package PracticeReview.Lambda;
/**
* 根据需求写代码
* 需求:
* 用Lambda表达式的标准格式调用`invokeCalc`方法
* 完成120和130的相加计算--->该方法传递两个整数和一个接口
* 里面通过接口中的方法计算两个整数的和并且输出
* @since JDK 1.8
* @date 2021/07/23
* @author Lucifer
*/
public class CalculatorDemoNo1 {
public static void main(String[] args) {
//调用invokeCalc方法--->方法参数是一个接口,可以使用匿名内部类
invokeCalc(10, 20, new Calculator() {
It's a lonely road!!!