0
私は4つの異なるArrayListを持っています。私は価値観のあらゆる組み合わせを試してみたい。Javaネストされたイテレータは、IllegalStateExceptionをスローする
最初の組み合わせで制約が満たされない場合は、最初の値を最初のリストから削除し、次の値ですべてを再実行します。
各ArrayListに対してイテレータを作成しましたが、最初のArrayListから値を削除するとIllegalStateExceptionがスローされます。
これは私のコードです:
public static boolean revise(Haus haus1, Haus haus2) {
boolean removed = false;
Iterator<String> iteratorFarbe1 = haus1.getFarbListe().iterator();
while (iteratorFarbe1.hasNext()) {
String farbe1 = iteratorFarbe1.next();
Iterator<String> iteratorFarbe2 = haus2.getFarbListe().iterator();
while (iteratorFarbe2.hasNext()) {
String farbe2 = iteratorFarbe2.next();
Iterator<String> iteratorLand1 = haus1.getLandListe().iterator();
while (iteratorLand1.hasNext()) {
String land1 = iteratorLand1.next();
Iterator<String> iteratorLand2 = haus2.getLandListe().iterator();
while (iteratorLand2.hasNext()) {
String land2 = iteratorLand2.next();
Haus checkHaus1 = new Haus(haus1.getNummer(), farbe1, land1);
Haus checkHaus2 = new Haus(haus2.getNummer(), farbe2, land2);
if (!checkConstraints(checkHaus1, checkHaus2)) {
iteratorFarbe1.remove();
removed = true;
}
}
}
}
}
return removed;
}
の2回の呼び出しの間に複数回呼び出すので、これが起こる可能性さて、それを動作させるために、異なるこれを行うにはそこに方法はありますか? – alena
@alena一番外側のループにラベルを追加し、 'continue'を使うことができます。 – Bubletan
はい、@Bubletanが推奨するラベルを使用できます。 – Sergi