java_树形结构_递归_案例1

news/2024/7/24 8:05:45

结果:

代码:

JSON的jar:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

地区:

public class Area {

    private Integer id;

    private Long areaCode;

    private String areaName;

    private Integer level;

    private Long parentCode;

    public Area() {

    }

    public Area(Integer id, Long areaCode, String areaName, Integer level, Long parentCode) {
        this.id = id;
        this.areaCode = areaCode;
        this.areaName = areaName;
        this.level = level;
        this.parentCode = parentCode;
    }

    public Long getParentCode() {
        return parentCode;
    }

    public void setParentCode(Long parentCode) {
        this.parentCode = parentCode;
    }

    private List<Area> childList;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Long getAreaCode() {
        return areaCode;
    }

    public void setAreaCode(Long areaCode) {
        this.areaCode = areaCode;
    }

    public String getAreaName() {
        return areaName;
    }

    public void setAreaName(String areaName) {
        this.areaName = areaName;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public List<Area> getChildList() {
        return childList;
    }

    public void setChildList(List<Area> childList) {
        this.childList = childList;
    }

    @Override
    public String toString() {
        return "Area{" +
                "id=" + id +
                ", areaCode=" + areaCode +
                ", areaName='" + areaName + '\'' +
                ", level=" + level +
                ", parentCode=" + parentCode +
                ", childList=" + childList +
                '}';
    }
}

main方法:

public class AreaTest {
    public static void main(String[] args) {
        Area a = new Area();
        //对List进行赋值,静态写死
        List<Area> areaList = getArea();
        //筛选出根类
        for (int i = 0; i < areaList.size(); i++) {
            System.out.println("根类" + areaList.get(i).toString());
            if (areaList.get(i).getLevel() == 0) {
                a = areaList.get(i);
                break;
            }
        }
        //用递归的方式

        Area area = getAreaTree(a, 0);
        System.out.println(JSON.toJSON(area));
    }

    public static Area getAreaTree(Area area, Integer parentId) {
        //获取到所有的数据
        List<Area> areaList = getArea();
        List<Area> childList = Lists.newArrayList();

        //进行子结构设置
        for (int i = 0; i < areaList.size(); i++) {
            if (areaList.get(i).getParentCode().equals(area.getAreaCode())) {
                childList.add(areaList.get(i));
            }
        }
        area.setChildList(childList);
        parentId = parentId + 1;//这个地方要结合实际
        if (parentId < 5) {
            for (int i = 0; i < area.getChildList().size(); i++) {
                getAreaTree(area.getChildList().get(i), parentId);
            }
        }
        return area;
    }


    public static List<Area> getArea() {
        Area area1 = new Area(1, 101L, "全国", 0, 0L);
        Area area2 = new Area(2, 102L, "江西省", 1, 101L);
        Area area3 = new Area(3, 103L, "广东省", 1, 101L);
        Area area4 = new Area(4, 104L, "赣州市", 2, 102L);
        Area area5 = new Area(5, 105L, "南昌市", 2, 102L);
        Area area6 = new Area(6, 106L, "兴国县", 3, 104L);
        Area area7 = new Area(7, 107L, "会昌县", 3, 104L);
        Area area8 = new Area(8, 108L, "西江镇", 4, 107L);
        Area area9 = new Area(9, 109L, "小密乡", 4, 107L);
        Area area10 = new Area(10, 110L, "莲塘村", 5, 109L);
        Area area11 = new Area(11, 111L, "饼丘村", 5, 108L);
        Area area12 = new Area(12, 112L, "深圳市", 2, 103L);

        List<Area> areaList = Lists.newArrayList();
        areaList.add(area1);
        areaList.add(area2);
        areaList.add(area3);
        areaList.add(area4);
        areaList.add(area5);
        areaList.add(area6);
        areaList.add(area7);
        areaList.add(area8);
        areaList.add(area9);
        areaList.add(area10);
        areaList.add(area11);
        areaList.add(area12);
        return areaList;
    }
}

 


http://www.niftyadmin.cn/n/1728633.html

相关文章

python 字典添加元素 只能到最后吗_Python之字典添加元素的几种方法

本文使用的代码book_dict {"price": 500, "bookName": "Python设计", "weight": "250g"}第一种方式&#xff1a;使用[]book_dict["owner"] "tyson"说明&#xff1a;中括号指定key&#xff0c;赋值一个…

Java_代理模式

介绍: 要求给某一个对象提供一个代理,并由代理对象控制原有对象的引用 角色: Subject(抽象主题角色) 声明了真实主题和代理主题接口,这样一来,使用真实主题的地方都可以使用代理主题 Proxy(代理主题角色) 代理主题角色包含对真实主题的引用,从而可以在任何时候操作真实主…

vue中方法体内未严格按照执行顺序执行(自上而下,依次执行 ,有用)

注意&#xff1a; VUE中的方法调用顺序是依次进行的&#xff0c;方法体内部也是依次执行的&#xff0c; 但是&#xff0c;两个方法体的执行顺序并不能严格控制&#xff0c;不一定一个方法执行完再执行另一个 下面来说一下涉及到axios请求时的执行顺序我们要求的执行顺序是&…

python分数约分_C++、Java、Python中都是怎么精确表达分数的?

你要的东西&#xff0c;STL 库已经有了&#xff0c;叫 std::ratio &#xff0c;是 C11 标准的模板类。在 C11 标准之后&#xff0c;C委员会加入了大量高等数学相关的函数&#xff0c;beta函数、gamma函数、黎曼Zeta函数、球面贝塞尔函数等等&#xff0c;少不了优秀的先驱库 boo…

lambda表达式filter使用

filter经常使用到,作为一个积累,直接贴代码 实体类 public class User implements Serializable {private String name;private Integer age;private String address;private BigDecimal balance;private Date createTime;public String getName() {return name;}public void…

es6中的箭头函数和this关键字的说明(详细)

1.箭头函数 2.js的this指向1.箭头函数 >等价于return 它不能作为构造函数&#xff0c;不能new let xx () > 555; //xx为一个函数,调用时需带&#xff08;&#xff09; console.log(xx()); //555 //等同于 function xx2() {return 555; } console.log(xx2()); //555//…

兴趣点推荐代码_[深度模型] 阿里MIND网络:天猫首页是怎么给用户做多兴趣embedding的...

本人微信公众号为“推荐算法学习笔记”&#xff0c;定期推出经典推荐算法文章&#xff0c;欢迎关注。一. 概述我们知道推荐系统一般有两个重要阶段&#xff0c;召回和精排阶段。召回阶段负责从海量的商品中选出用户感兴趣的候选集&#xff0c;精排阶段再对这些候选集进行排序取…

Vue.config.productionTip = false

Vue.config.productionTip false&#xff0c;阻止启动生产消息&#xff1b; 没有Vue.config.productionTip false这句代码&#xff0c;它会显示你生产模式的消息&#xff1b; 开发环境下&#xff0c;Vue 会提供很多警告来帮你对付常见的错误与陷阱。 而在生产环境下&#x…