java8 函数式编程实现递归和业务逻辑分离

1 创建实例对象

@Data
public class Param implements Serializable {

    private static final long serialVersionUID = 877366142922526137L;

    private String name;

    private String position;

    private String required;

    private Object example;

    private List<Param> child;
}

2 创建包装类型实例对象

@Data
    public static class ParamWapper{
       private String subName;
       private Param param;
    }

3 递归方法实现

public static void paramTraversal(Param param,String subName, Consumer<ParamWapper> consumer){
        if(null == param){
            return;
        }
        ParamWapper paramWapper = new ParamWapper();
        paramWapper.setParam(param);
        paramWapper.setSubName(subName);
        consumer.accept(paramWapper);

        if(CollectionUtils.isNotEmpty(param.getChild())){
            List<Param> child = param.getChild();
            child.stream().forEach(childParam -> {
                paramTraversal(childParam,param.getName(),consumer);
            });

        }
    }

4 递归业务逻辑实现

public static void main(String[] args) {
        Param sub = createParam("sub",true);

        paramTraversal(sub,sub.getName(),paramWapper -> {
            System.out.println("param:"+paramWapper.getParam());
        });

    }

    public static Param createParam(String name,Boolean addChild){
        Param param = new Param();
        param.setName("param:"+name);
        param.setPosition("query");
        if(addChild){
            ArrayList<Param> params = new ArrayList<>();
            for(int k = 0 ; k < 5 ; k++){
                params.add(createParam(String.valueOf(k),false));
            }
            param.setChild(params);
        }
        return param;
    }

这样的优雅的代码 ,能够实现将递归算法和具体的业务逻辑进行解耦,实现递归算法方法的复用 赞~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值