结果:
代码:
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;
}
}