プログラミングクラスのエクササイズにいくつか問題があります。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'を追加するためにイテレータ –
を使用してください。これはあなたがしたいことではないと思います。 –