【五 SpringBoot - Java8 新特性】// 借助Comparator接口,讲解多个参数Comparator<Integer> comparator1 = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1.compareTo(o2);}};// 未使用lambda表达式,用法:带多个参数,有返回值log.info("------ 不使用lambda表达式,实现Comparator接口,比较12,23的大小:{} ------",comparator1.compare(12,23));// 小于 -1,大于 1,等于 0
1.2.3.2 简化写法:省略参数类型,但是不可以省略小括号,一条语句省略大括号,跟返回值无关(不用手动加return)//省略参数类型,但是不可以省略小括号,一条语句省略大括号,跟返回值无关(不用手动加return)Comparator<Integer> comparator2 = (o1,o2) -> o1.compareTo(o2);log.info("------ 使用lambda表达式,实现Comparator接口,比较23,12的大小:{} ------",comparator2.compare(23,12));// 大于 1
1.2.3.3 简化写法:多条语句不可以省略大括号,带返回值(需手动加return)//多条语句不可以省略大括号,带返回值(需手动加return)Comparator<Integer> comparator3 = (o1,o2) -> {log.info("------ 比较原数值为:{},{}",o1,o2);return o1.compareTo(o2);};log.info("------ 使用lambda表达式,实现Comparator接口,比较22,22的大小:{} ------",comparator3.compare(22,22));// 等于 0
1.3 java8中提供的函数式接口1.3.1消费型接口 Consumer (方法有一个参数,没有返回值)1.3.1.1 自定义方法 (使用接口的 void accept(T t))//自定义方法,带有一个消费型接口参数,可以实现一个方法,处理不同的业务场景static void useConsumer(Double salary,Consumer<Double> consumerDate){consumerDate.accept(salary);}
1.3.1.2 方法调用static void testLambdaConsumer(){//场景,同一个接口,有多个实现,以前,必须要创建接口的多个实现类,现在使用lambda,把接口的实现交给调用方法传递//实现1:Tom发了5000工资,去买手机,模拟接口的第一个实现//以前,必须提供接口的实现类对象useConsumer(5000.0,salary -> log.info("Tom,工资:{},5000买手机",salary));//实现1:Tom发了10000工资,去买手机,买平板,模拟接口的第二个实现//以前,必须提供接口的 两个 实现类对象useConsumer(10000.0,slary -> {log.info("JiMe工资:{},5000买手机",slary);log.info("JiMe工资:{},4000买平板",slary);});}
1.3.1.3 测试结果
文章插图
1.3.2 供给型接口Supplier(方法没有参数,可以返回任意类型的结果)1.3.2.1 自定义方法 (使用接口的 T get() )
//带一个供给型参数,可以实现同一个方法,处理实现同一个方法,处理不同的业务场景,给的数据不同,返回的结果不同static String useSupplier(Double salary, Supplier<Double> supplierData){//判断是否高薪的逻辑if(salary > supplierData.get()){return "高薪";}return "底薪";}
1.3.2.2 方法调用static void testLambdaSupplier(){//场景:不同的部门,针对高薪的判断条件不同,比如:学术部高于8000算高薪,教职部门高于5000算高薪//以前的写法:根据不同的不同,增加if...else 判断,随着部门的增加,你分的判断会越来越复杂log.info("--- 学术部:工资:{},是否高薪:{} ---",9000.0,useSupplier(9000.0,() -> 8000.0));log.info("--- 学术部:工资:{},是否高薪:{} ---",7000.0,useSupplier(7000.0,() -> 8000.0));log.info("--- 教职部:工资:{},是否高薪:{} ---",7000.0,useSupplier(7000.0,() -> 5000.0));log.info("--- 教职部:工资:{},是否高薪:{} ---",4000.0,useSupplier(7000.0,() -> 5000.0));}
1.3.2.3 测试结果文章插图
经验总结扩展阅读
- 2023年农历八月廿五宜养花吗 2023年10月9日适合养花吗
- 2023年农历八月廿五宜打农药吗 2023年10月9日是打农药吉日吗
- 2023年10月9日适合消灭害虫吗 2023年农历八月廿五宜消灭害虫吗
- 2023年农历八月廿五宜画画吗 2023年10月9日画画吉日一览表
- 2023年农历八月廿五砍树吉日 2023年10月9日是砍树的黄道吉日吗
- 2023年农历八月廿五买猫吉日 2023年10月9日买猫吉日一览表
- 2023年2月9日五行穿衣颜色 2023年每日五行穿衣搭配对照表
- 2023年10月9日是买鸡吉日吗 2023年农历八月廿五买鸡吉日
- 2023年10月9日买鸭好吗 2023年农历八月廿五买鸭吉日
- 2023年农历八月廿五买牛吉日 2023年10月9日是买牛吉日吗