public class AreaVo {
private String areaCode;
private String areaName;
private String upAreaCode;
private List<AreaVo> childArea;
public void addChild(AreaVo areaVo){
if (childArea==null){
childArea =new ArrayList<>();
}
childArea.add(areaVo);
}
public AreaVo() {
}
public AreaVo(String areaCode, String areaName, String upAreaCode) {
this.areaCode=areaCode;
this.areaName=areaName;
this.upAreaCode=upAreaCode;
}
public String getAreaCode() {
return areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getUpAreaCode() {
return upAreaCode;
}
public void setUpAreaCode(String upAreaCode) {
this.upAreaCode = upAreaCode;
}
public List<AreaVo> getChildArea() {
return childArea;
}
public void setChildArea(List<AreaVo> childArea) {
this.childArea = childArea;
}
@Override
public String toString() {
return "AreaVo{" +
"areaCode='" + areaCode + '\'' +
", areaName='" + areaName + '\'' +
", upAreaCode='" + upAreaCode + '\'' +
", childArea=" + childArea +
'}';
}
}
import java.util.ArrayList;
import java.util.List;
public class ListToTree {
public static void main(String[] args) {
List<AreaVo> areaVos = new ArrayList<AreaVo>();
areaVos.add(new AreaVo("10","安徽","01"));
areaVos.add(new AreaVo("101","合肥","10"));
areaVos.add(new AreaVo("102","安庆","10"));
areaVos.add(new AreaVo("103","池州","10"));
areaVos.add(new AreaVo("101001","肥东县","101"));
areaVos.add(new AreaVo("101002","肥西县","101"));
areaVos.add(new AreaVo("101003","蜀山区","101"));
areaVos.add(new AreaVo("102001","宿松","102"));
areaVos.add(new AreaVo("102002","枞阳","102"));
areaVos.add(new AreaVo("103001","贵池","103"));
areaVos.add(new AreaVo("103002","青阳","103"));
areaVos.add(new AreaVo("103003","冬至","103"));
areaVos.add(new AreaVo("103004","石台","103"));
List<AreaVo> tree = new ArrayList<>();
for (AreaVo node: areaVos){
if ("10".equals(node.getAreaCode())){
tree.add(node);
addChild(areaVos,node);
}
}
System.out.println(tree);
}
public static void addChild(List<AreaVo> list , AreaVo node){
for (AreaVo zone:list){
if (node.getAreaCode().equals(zone.getUpAreaCode())){
node.addChild(zone);
}
}
if (node.getChildArea()==null){
return;
}
for (AreaVo zone:node.getChildArea()){
addChild(list,zone);
}
}
}
[
AreaVo{areaCode='10',areaName='安徽', upAreaCode='01',
childArea=[
AreaVo{areaCode='101',
areaName='合肥',
upAreaCode='10',
childArea=[
AreaVo{areaCode='101001',
areaName='肥东县',
upAreaCode='101',
childArea=null},
AreaVo{areaCode='101002',
areaName='肥西县',
upAreaCode='101',
childArea=null},
AreaVo{areaCode='101003',
areaName='蜀山区',
upAreaCode='101',
childArea=null}
]
},
AreaVo{areaCode='102',
areaName='安庆',
upAreaCode='10',
childArea=[
AreaVo{areaCode='102001',
areaName='宿松',
upAreaCode='102',
childArea=null},
AreaVo{areaCode='102002',
areaName='枞阳',
upAreaCode='102',
childArea=null}
]
},
AreaVo{areaCode='103',
areaName='池州',
upAreaCode='10',
childArea=[
AreaVo{areaCode='103001',
areaName='贵池',
upAreaCode='103',
childArea=null},
AreaVo{areaCode='103002',
areaName='青阳',
upAreaCode='103',
childArea=null},
AreaVo{areaCode='103003',
areaName='冬至',
upAreaCode='103',
childArea=null},
AreaVo{areaCode='103004',
areaName='石台',
upAreaCode='103',
childArea=null}
]
}
]
}
]