0
我有四個不同的ArrayList。我想嘗試每種可能的價值組合。Java嵌套迭代器拋出IllegalStateException
如果第一個組合不會導致滿足我的約束條件,那麼我想從第一個列表中刪除第一個值,並使用下一個值再次完成整個事件。
我爲每個ArrayList創建了一個Iterator,但是當我從第一個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;
}
好了兩個電話之間,是有辦法做到這一點不同,使其工作? – alena
@alena你可以添加一個標籤到最外層的循環並使用'continue'。 – Bubletan
是的,您可以使用@Bubletan建議的標籤。 – Sergi