• 7.22Java之Lambda表达式练习


    7.22Java之Lambda表达式练习

    使用Lmabda表达式定义一个无参数无返回值的方法

    定义一个接口:

    package PracticeReview.Lambda;

    /**
    * 定义一个接口,内含唯一一个抽象方法makeFood
    * @since JDK 1.8
    * @date 2021/07/22
    * @author Lucifer
    */
    public interface Cook {
       //定义无参数无返回值的方法
       public abstract void makeFood();
    }

    使用Lambda表达式对该接口进行实现:

    package PracticeReview.Lambda;

    /**
    * Cook接口的测试类
    * @since JDK 1.8
    * @date 2021/07/22
    * @author Lucifer
    */
    public class CookDemoNo1 {
       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接口当中的方法
       public static void invokeCook(Cook cook){
           cook.makeFood();
      }
       /*
       1、创建了一个Cook类接口,里面定义了一个抽象方法
       2、创建了一个调用方法,调用接口当中的抽象方法
       3、使用lambda表达式去调用接口当中的抽象方法
        */
    }

    Lambda表达式的参数和返回值

    需求:
    使用数组存储多个Person对象
    对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序
    Answer
    package PracticeReview.Lambda;

    import java.util.Arrays;
    import java.util.Comparator;

    /**
    * 根据需求写代码
    *     需求:
    *         使用数组存储多个Person对象
    *       对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序
    * @since JDK 1.8
    * @date 2021/07/23
    * @author Lucifer
    */
    public class ArraysDemoNo1 {
       public static void main(String[] args) {
           //使用数组存储多个Person对象
           Person[] arr = {
                   new Person("柳岩", 18),
                   new Person("迪丽热巴", 19),
                   new Person("古力娜扎", 20)
          };

           //对数组中的Person对象使用Arrays的sort方法通过年龄进行升序(前边-后边)排序
           /*
           sort方法的传参是前面传一个数组后面传一个Comparator对象
           Comparator是一个接口,使用匿名内部类对其进行重写
            */
    //       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 p : arr) {
               System.out.println(p);
          }
      }
    }

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

    需求:
    给定一个计算器`Calculator`接口,内含抽象方法`calc`可以将两个int数字相加得到和值
    使用Lambda表达式的标准格式调用`invokeCalc`方法,完成120和130的相加计算--->该方法传递两个整数和一个接口,里面通过接口中的方法计算两个整数的和并且输出
    package PracticeReview.Lambda;

    /**
    * 根据需求写代码
    * 需求:
    *     用Lambda表达式的标准格式调用`invokeCalc`方法
    *     完成120和130的相加计算--->该方法传递两个整数和一个接口
    *     里面通过接口中的方法计算两个整数的和并且输出
    * @since JDK 1.8
    * @date 2021/07/23
    * @author Lucifer
    */
    public class CalculatorDemoNo1 {
       public static void main(String[] args) {
           //调用invokeCalc方法--->方法参数是一个接口,可以使用匿名内部类
           invokeCalc(10, 20, 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类型的整数和接口
       方法内部调用接口中的方法
       计算两个这个整数的和
        */
       public static void invokeCalc(int a, int b, Calculator c){
           //写方法体
           int sum = c.calc(a,b);
           System.out.println(sum);
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    vue-element-admin项目install出现的问题
    关于html5 Notification桌面通知无法在谷歌浏览器显示的问题
    C#调用存储过程执行缓慢,但在数据库中执行却很快的问题
    IdnentiyServer-使用客户端凭据访问API
    IdentityServer开题篇
    IdentityServer4客户端JWT解密实现(基于.net4.0)
    iis访问网络路径映射问题(UNC share)
    .net core部署在iis上
    git blame 查找修改者
    代码管理工具-将项目文件打成tar包,并且排除.git目录
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15050206.html
Copyright © 2020-2023  润新知