Lambda表达式无参数无返回值的练习和Lambda表达式有参数有返回值的练习
阅读原文时间:2023年07月09日阅读:1

题目:

给定一个厨子Cook接口,内容唯一的抽象方法makeFood,且无参数、无返回值。如下:

public interface Cook{
void makeFood();
}

在下面的代碼中,使用Lambda的标准格式调用invokeCook方法,打印输出吃饭啦字样

package com.yang.Test.exercises;

public class Demo01InvokeCook {
    public static void main(String[] args) {
//        invokeCook(new Cook() {
//            @Override
//            public void makeFood() {
//                System.out.println("吃饭啦");
//            }
//        });
        //使用lambda表达式简化匿名内部类的书写
        invokeCook(() -> {
            System.out.println("吃饭啦");
        });
    }

    public static void invokeCook(Cook cook){
        cook.makeFood();
    }
}

Lambda表达式有参数有返回值的练习

需求:

使用数组存储多个Person对象

对数据中的Person对象使用Arrays的sort方法通过年龄进行升序排序

package com.yang.Test.exercises;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        Person[] arr = {
                new Person("张三",12),
                new Person("李四",23),
                new Person("王五",15)
        };

        Arrays.sort(arr,(o1, o2) -> {
            return o1.getAge() - o2.getAge();
        });

        for (Person person : arr) {
            System.out.println(person);
        }

    }
}



public class Person {
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}