解决方案 »

  1.   


    其实我根据你的方法已经实现了子结点的递归,但是只能print而已,怎么也写不进array里。
    不好意思。
      

  2.   

    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;
    }
      

  3.   

    我最后这么解决了。我没有办法把结果写进array 里,因为这个方法会被递归调用很多次,所以我重新写了一个class来递归。贴出来:
    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);
    } }
      

  4.   


    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,方便大家看。