Lambda表达式有参数有返回值的练习与Lambda表达式有参数有返回值的练习(自定义接口)
Lambda表达式有参数有返回值的练习
操作步骤:
1定义一个接口(Addable),里面定义一个抽象方法:int add(int x,int y)
2定义一个测试类(AddableDemo),在测试类中提供两个方法:
一个方法是:useAddable(Addable a)
一个方法是主方法,在主方法中调用useAddable方法
代码:
接口:
public interface Addable { int add(int a, int b); }
测试类:
public class AddableDemo { public static void main(String[] args) { //方式1 匿名内部类 useAddable(new Addable() { @Override public int add(int a, int b) { return a + b; } }); //方式2 Lambda 表达式 useAddable(((a, b) -> { return a + b; })); } public static void useAddable(Addable a) { int num = a.add(10, 20); System.out.println(num); } }
package Demo_Proer; import java.util.Arrays; import java.util.Comparator; /* L ambda表达式有参数有返回值的练习需求: 使用数组存储多个Person对象 对数组中的Person对象使用Array5666666666666gbhtvh6669s的sort方法通过年龄进行升序排序 */ public class Demo01_Prower { public static void main(String[] args) { ///使用数组存储多个Person对象 Demo01_Arrays[] arr ={new Demo01_Arrays("派克",4568),new Demo01_Arrays("亚索",6523),new Demo01_Arrays("瑞文",9875)}; //对数组中的Person对象使用Arrays的sort方法通过年龄进行升序(前边-后边)排序 Arrays.sort(arr, new Comparator<Demo01_Arrays>() { @Override public int compare(Demo01_Arrays o1, Demo01_Arrays o2) { return o1.getAge()-o2.getAge(); } }); //使用Lambda表达式,简化匿名内部类 Arrays.sort(arr,(Demo01_Arrays o1,Demo01_Arrays o2)->{ return o1.getAge()-o2.getAge(); }); //遍历数组 for (Demo01_Arrays p : arr ){ System.out.println(p); } } }
练习:使用Lambda标准格式(有参有返回)
题目
给定一个计算器calculator 接口,内含抽象方法calc可以将两个int数字相加得到和值︰
package Demo_Proer; public class Demo01_Arrays { private String name; private int age; public Demo01_Arrays(String name, int age) { this.name = name; this.age = age; } public Demo01_Arrays() { } 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; } @Override public String toString() { return "Demo01_Arrays{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
package Demo1_Proer; /* Lambda表达式有参数有返回值的练习 需求:给定一个计算器Calculator接口,内含抽象方法calc可以将两个int数字相加得到和值 使用Lambda的标准格式调用invokeCalc方法,完成120和130的相加计算 */ public class Demo05Calculator { public static void main(String[] args) { //调用invokeCalc方法,方法的参数是一个接口,可以使用匿名内部类 invokeCalc(120, 130, new Calculator() { @Override public int calc(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 = a + b; System.out.println(sum); } }