public GeographicalArea[] getAreaWithSubarea() { ArrayList<GeographicalArea> list = this.getSubarea(); GeographicalArea[] areas = new GeographicalArea[list.size()]; int i = 0; for (GeographicalArea area : list) { areas[i++] = area; } return areas; }
private ArrayList<GeographicalArea> getSubarea() { ArrayList<GeographicalArea> areas = new ArrayList<>(); for (GeographicalArea area : this.subAreas) { areas.add(area); areas.addAll(area.getSubarea()); } return areas; }
其实我根据你的方法已经实现了子结点的递归,但是只能print而已,怎么也写不进array里。
不好意思。
ArrayList<GeographicalArea> list = this.getSubarea();
GeographicalArea[] areas = new GeographicalArea[list.size()];
int i = 0;
for (GeographicalArea area : list) {
areas[i++] = area;
}
return areas;
}
private ArrayList<GeographicalArea> getSubarea() {
ArrayList<GeographicalArea> areas = new ArrayList<>();
for (GeographicalArea area : this.subAreas) {
areas.add(area);
areas.addAll(area.getSubarea());
}
return areas;
}
private List<GeographicalArea> areaArray = new ArrayList<GeographicalArea>();
public void recursionFn(GeographicalArea area){
if(area.getSubAreas()!=null && area.getSubAreas().size() >0){
areaArray.add(area);
Iterator<GeographicalArea> childIT = area.getSubAreas().iterator();
while(childIT.hasNext()){
GeographicalArea node = (GeographicalArea)childIT.next();
recursionFn(node);
}
}else{
areaArray.add(area);
} }
private List<GeographicalArea> areaArray = new ArrayList<GeographicalArea>();
public void recursionFn(GeographicalArea area){
if(area.getSubAreas()!=null && area.getSubAreas().size() >0){
areaArray.add(area);
Iterator<GeographicalArea> childIT = area.getSubAreas().iterator();
while(childIT.hasNext()){
GeographicalArea node = (GeographicalArea)childIT.next();
recursionFn(node);
}
}else{
areaArray.add(area);
}}
调整格式为java,方便大家看。