java的iterator.next方法报错

问题遇到的现象和发生背景

在用iterator遍历set元素时报错Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1584)
at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1607)

问题相关代码,请勿粘贴截图
private static boolean dfs(int k, int[][] distance, HashSet<Integer> set, int n) {
        if (set.size() == n) {
            return true;
        }
        boolean isAdd=false;
        Iterator<Integer> iterator = set.iterator();
        for (int i = 0; i < n; i++) {
            if (set.contains(i)) {
                continue;
            }
            while (iterator.hasNext()){
                int temp=iterator.next();
                if (distance[i][temp] <= k) {
                    set.add(i);
                    isAdd=true;
                    break;
                }
            }
        }
        if (!isAdd) {
            return false;
        }
        return dfs(k,distance,set,n);
    }
运行结果及报错内容

Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1584)
at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1607)

我的解答思路和尝试过的方法

查到很多说是一个while中不能用1次以上的next()方法,但我只用了一次也报错,而且明明是先用hasNext()方法判断过是否由下一个元素的,不知道原因,希望各位解答一下。

我想要达到的结果

ConcurrentModificationException
迭代过程中,不能用集合自带的新增、删除接口。否则会报并发错误。

要用Iterator就别使用原集合的增删操作,如果要在循环中使用原集合的增删操作,只能用for(int i=0;i<size;i++)这种循环。