我在編程類中遇到了一些問題。使用ArrayList的遞歸方法
我有這樣一類:
類
的UML我不得不做出這樣從一個部門返回的子行業總量的公共方法。
這是整個類的代碼:
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());
什麼我做錯了任何想法?
我不能按照你想要做的。但是你不能同時使用for-each循環迭代集合,並用add方法修改它。也許你需要重新設計這個。 –
你正在遍歷一個arrayList,並在同一時間修改它,不能這樣做。代替'for'循環,對每個新的'Sector'使用迭代器 –
,你將會有一個新的'arrayList' - 我不認爲這是你想要做的。 –