视频模板网站,wordpress远程下载,网站设计怎么设计学生作业,网页设计dw代码大全如果函数式接口作为一个方法的参数#xff0c;就以为着要方法调用方自己实现业务逻辑#xff0c;常见的使用场景是一个业务整体逻辑是不相上下的#xff0c;但是在某一个步骤有不同的逻辑#xff0c;例如数据处理有不同的策略#xff0c;如果有大量的if-els#xff0c;或…如果函数式接口作为一个方法的参数就以为着要方法调用方自己实现业务逻辑常见的使用场景是一个业务整体逻辑是不相上下的但是在某一个步骤有不同的逻辑例如数据处理有不同的策略如果有大量的if-els或者switch-case还可以结合工厂模式消除这些分支代码。上代码
package com.dj.lambda;import java.util.List;
import java.util.function.Function;/*** User: ldj* Date: 2024/1/28* Time: 14:57* Description: 业务模板*/
public class LambdaTemplate {public Object execute(ListInteger data, FunctionListInteger, Object function) {connect();request();return invokeHandler(data, function);}//步骤一private void connect() {System.out.println(连接成功);}//步骤二private void request() {System.out.println(获取数据成功);}//步骤三 只有这里不同处理数据有不同的处理策略 假设apply方法有很多复杂的业务逻辑private Object invokeHandler(ListInteger data, FunctionListInteger, Object function) {return function.apply(data);}
}数据处理不同的策略
package com.dj.lambda;import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;/*** User: ldj* Date: 2024/1/28* Time: 15:26* Description: list元素去重*/
public class DistinctHandler implements FunctionListInteger, Object {Overridepublic Object apply(ListInteger integers) {return integers.stream().distinct().collect(Collectors.toList());}
}package com.dj.lambda;import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;/*** User: ldj* Date: 2024/1/28* Time: 15:21* Description: 统计list相同元素出现的次数*/
public class StatisticsHandler implements FunctionListInteger, Object {Overridepublic Object apply(ListInteger integers) {return integers.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));}
}package com.dj.lambda;import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.stream.Collectors;/*** User: ldj* Date: 2024/1/28* Time: 15:42* Description: No Description*/
public class Test {public static void main(String[] args) {ListInteger list Arrays.asList(1, 1, 1, 4, 2, 5, 3, 6);LambdaTemplate lambdaTemplate new LambdaTemplate();//1.像这种业务比较复杂代码比较多的建议写实现类比如策略类System.out.println(lambdaTemplate.execute(list, new StatisticsHandler()));System.out.println(lambdaTemplate.execute(list, new DistinctHandler()));//2.如果是简单的直接使用lambda表达式书写更为合适System.out.println(lambdaTemplate.execute(list, els- els.stream().sorted().collect(Collectors.toList())));System.out.println(lambdaTemplate.execute(list, els - els.stream().sorted().collect(Collectors.toCollection(LinkedHashSet::new))));}
}