Lambda表达式的无参数无返回值的练习和Lambda表达式有参数有返回值的练习
使用Lambda(无参无返回)
说明:给定一个厨师(Cook
)接口,内含唯一的抽象方法makeFood
,且无参数、无返回值。如下:
public interface Cook{ public abstract void makeFood(); }
在main主函数代码中,使用Lambda
的标准格式调用invokeCook
方法,打印输出"该进食了!"字样
public class DemoInvokeCook{ public static void main(String[] args) { // TODO 在此使用Lambda【标准格式】调用InvokeCook方法 // 使用旧方法 invokeCook(new Cook(){ @Override public void makeFood(){ System.out.println("该进食了!"); } }); // 使用Lambda表达式,简化匿名内部类的书写 invokeCook(() -> { System.out.println("该进食了!"); }); } private static void invokeCook(Cook cook){ cook.makeFood(); } }
使用Lambda(有参数有返回值)
案例1
- 使用数组存储多个Peoson对象
- 对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序
public class Demo01LambdaMain { public static void main(String[] args) { Person[] arr = { new Person("张三", 29), new Person("李四", 19), new Person("王五", 31) }; // 对数组中的Person对象使用Arrays的sort方法通过年龄进行升序(前边-后边)排序 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 person : arr) { System.out.println(person); } } }