递归,demo

递归省县市

    public Result findNodes() {
        List<GoodsType> listGoodsType = goodsTypeService.list();

        List<GoodsType> result = listGoodsType.stream().filter(GoodsType -> GoodsType.getParentId() == 0)
                .map(GoodsType -> {
                    GoodsType.setChildren(getmMltistage(GoodsType, listGoodsType));
                    return GoodsType;
                }).collect(Collectors.toList());
        return Result.ok(result);
    }
   //   递归 省县市
    private List<GoodsType> getmMltistage(GoodsType root , List<GoodsType> allList) {
        List<GoodsType> collect = allList.stream().filter(e -> e.getParentId().equals(root.getId()))
                .map(e -> {
                    e.setChildren(getmMltistage(e, allList));
                    return e;
                }).collect(Collectors.toList());
        return collect;
    }

示例2

package com.lfweixiao;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author LFweixiao
 * @create 2022-09-11 10:37 上午
 */
public class 测试 {

    public static void main(String[] args) {

        List<AList> d = getData();
        ArrayList<AList> aaa = new ArrayList<>();

        t001(d,aaa );

        aaa.forEach(System.out::println);

    }

    static void t001(  List<AList> a1,List<AList>  a2){
        a1.forEach( e-> {
            if(e == null) return;
            if( e.getA() != null)  t001(e.getA() ,a2);
            e.setA(null);
            a2.add(e);
        });
    }


    static String get(String str){
        return str == null ? "1": "2";
    }

    static List<AList>  getData(){
        List<AList> a = new ArrayList<AList>();
        a.add( new AList("1",
                Arrays.asList(new AList("101"),new AList("102"),new AList("103"))
                ) );

        a.add( new AList("2",
                Arrays.asList(new AList("201"),new AList("202"),new AList("203",
                        Arrays.asList(new AList("20301"),new AList("20302"),new AList("20303"))
                        ))
        ) );
        return a;

    }

}
class AList{
    private String name;
    private List<AList> a;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<AList> getA() {
        return a;
    }

    public void setA(List<AList> a) {
        this.a = a;
    }

    public AList(String name, List<AList> a) {
        this.name = name;
        this.a = a;
    }

    @Override
    public String toString() {
        return "AList{" +
                "name='" + name + '\'' +
                ", a=" + a +
                '}';
    }

    public AList() {
    }

    public AList(String name) {
        this.name = name;
    }
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值