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);
    }
}

 

posted @ 2022-07-08 15:18  zj勇敢飞,xx永相随  阅读(61)  评论(0编辑  收藏  举报