Lambda表达式的无参数无返回值以及有参数有返回值
Lambda表达式的无参数无返回值的练习
需求:
给定一个子cook接口,内含唯一的象方法makeFood,且无参数、无返回值。
使用L ambda的标准格式调用invokeCook方法,打印输出“吃饭啦!”字样
/** * 给定一个子cook接口,内含唯一的象方法makeFood */ public interface Cook { public abstract void makeFood(); }
public class DemoCook { public static void main(String[] args) { //调用invokeCook方法,参数是Cook接口,传递Cook接口的匿名内部类对象 invokeCook(new Cook() { @Override public void makeFood() { System.out.println("吃饭了!"); } }); //使用Lambda表达式,简化匿名内部类的书写 invokeCook(()->{ System.out.println("吃饭了!"); }); } //定义一个接口参数传递Cook接口,方法内部调用Cook接口中的方法makeFood public static void invokeCook(Cook cook){ cook.makeFood(); } }
运行结果:
Lambda表达式的有参数有返回值的练习
需求:
使用数组存储多个Person对象
对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序
public class Person { private String name; private int age; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Person() { } public Person(String name, int age) { this.name = name; this.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 class Demo01Arrays { public static void main(String[] args) { Person[] arr = { new Person("张三",28), new Person("李四",26), new Person("王五",20), }; //对数组中的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); } } }
运行结果: