ArrayList的递归方法

时间:2016-08-18 01:39:10

标签: java recursion arraylist

我在编程课上遇到了一些麻烦。

我有一个这样的课:

类的UML

enter image description here

我必须制作一个公共方法,从一个扇区返回子扇区的总量。

这是整个班级的代码:

public class Sector {

private int number;
private String name;
private String type;

private ArrayList<Sector> sectors = new ArrayList<>();   

public Sector(int number, String name, String type) {
    this.number = number;
    this.name = name;
    this.type = type;
}

,递归方法就是这个

public ArrayList<Sector> getTotalSectors(Sector sector, ArrayList<Sector> sectors) {                    
    sectors.add(this);            
        if (sector.getSectors() != null) {
            for(Sector sector1 : sector.getSectors()) {
                getTotalSectors(sector1, sectors);
            }
        }        
    return sectors;
}

但是我无法使它工作,当我尝试在主

中调用方法时,我得到了这个
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)

**主要班级**

Sector s1 = new Sector(100, "sales", "sales");
    Sector s1_1 = new Sector (101, "minor sales", "minor");
    Sector s1_2 = new Sector (102, "mayor sales", "mayor");
    Sector s1_2_1 = new Sector (102, "lala sales", "lalala");

    s1.getSectors().add(s1_1);
    s1.getSectors().add(s1_2);
    s1_2.getSectors().add(s1_2_1);

s1.getTotalSectors(s1, s1.getSectors());

知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

在getTotalSectors方法中,使用下面的代码替换if结构中的for循环。如果使用Iterator类,则不应该发生异常。

   Iterator<Sector> iter = sectors.iterator();
    while (iter.hasNext()) {
    Sector sector1=iter.next();
    getTotalSectors(sector1, sectors);
   }