迭代器重置问题,如何通过for循环重置迭代器

题目:
1、随机生成10个[1,100]之间的整数,放到List集合中,遍历显示
2、找出前3名最大值,删除它们,注意可能重复
3、显示删除后的结果

想用迭代器完成题目,但是一直无法达到效果。

代码:

import java.util.*;

public class Test {
    public static void main(String[] args) {
        //生成10个随机整数的集合
        Random r = new Random();
        Set<Integer> set = new HashSet<>();
        for (int i = 1;i <= 10;i++) {
            set.add(r.nextInt(100) + 1);
        }
        System.out.println("10个随机值:" + set);

        //找出最大的前三
        Set<Integer> max3 = new LinkedHashSet<Integer>();
        int max;
        for (int i = 1;i <= 3;i++) {
            max = 0;
            Iterator<Integer> iterator = set.iterator();
            for ( iterator = set.iterator();iterator.hasNext();) {
                Integer next = iterator.next();
                if (iterator.next()> max) {
                    max = iterator.next();
                }
            }
            //找到最大值存入max3
            max3.add(max);
            //在原集合中,删掉最大值
              iterator.remove();

        }
        System.out.println("前3个最大的:" + max3 );
        System.out.println("删除后:" + set);
    }
}

报错:
Exception in thread "main" java.util.NoSuchElementException
其他:
我自己尝试过别的办法,可以完成题目,但是想使用迭代器来完成。
这个报错我自己得理解是迭代器到最后一位没元素了才发生得报错。我的思路是通过for循环,每一次循环重置迭代器,找到当前集合的最大值,存入max3,并且再原先的set里删除找到的最大值,依此达到题目效果,但是我自己怎么改都是报以上的错误。有人知道该怎么优化吗?

题目就是我自学java碰到的。。头铁

if (iterator.next()> max) {
  max = iterator.next();
}
改为
if (next> max) {
   max = next;
}
import java.util.*;
public class Main {
    public static void main(String[] args) {
//生成10个随机整数的集合
        Random r = new Random();
        List<Integer> set = new ArrayList<>();
        for (int i = 1;i <= 10;i++) {
            set.add(r.nextInt(100) + 1);
        }
        System.out.println("10个随机值:" + set);
        Collections.sort(set);
        System.out.println(set);
        for(int i=9;i>6;i--){
            set.remove(i);
        }
        System.out.println("删除后:" + set);
    }
}

img