Java 嵌套迭代器抛出 IllegalStateException

Java nested Iterator throws IllegalStateException

我有四个不同的 ArrayList。我想尝试所有可能的值组合。

如果第一个组合没有产生满足我的约束的结果,我想从第一个列表中删除第一个值,然后使用下一个值再次执行整个操作。

我为每个 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;
}

这可能是因为 teratorFarbe1.remove()iteratorFarbe1.hasNext()

的两次调用之间调用了不止一次