Java 在哈希集上迭代并在每次迭代中删除多个元素

Java 在哈希集上迭代并在每次迭代中删除多个元素,java,iterator,hashset,Java,Iterator,Hashset,在下面的代码中,我尝试获取一组最多为maxPlusOne的数据 现在在if语句中,我想从prime中删除perms中的所有元素。答案显示了如何删除迭代器指向的一个元素。甚至可以在一次迭代中删除循环时间中的多个元素吗?如果是,请提供帮助。迭代器只允许删除当前元素。对于您的情况,您不需要删除任何内容。我相信您想要删除的原因是为了避免调用CircularTime,因为该数字是以前遇到的数字的循环素数。在这种情况下,您只需检查该数字是否已经是circularPrimes集合的一部分-如果是,则不调用ge

在下面的代码中,我尝试获取一组最多为maxPlusOne的数据


现在在if语句中,我想从prime中删除perms中的所有元素。答案显示了如何删除迭代器指向的一个元素。甚至可以在一次迭代中删除循环时间中的多个元素吗?如果是,请提供帮助。

迭代器只允许删除当前元素。对于您的情况,您不需要删除任何内容。我相信您想要删除的原因是为了避免调用CircularTime,因为该数字是以前遇到的数字的循环素数。在这种情况下,您只需检查该数字是否已经是circularPrimes集合的一部分-如果是,则不调用getAllRotations

Set<Integer> primes = getPrimes(maxPlusOne); //Returns a set of all primes up to maxPlusOne ont including it
    Set<Integer> circularPrimes = new HashSet<>();

    Iterator<Integer> it = primes.iterator();
    while(it.hasNext()) {
        Set<Integer> perms = getAllRotations(it.next()); //Returns all rotations of an integer 123 => {123, 231, 312}

        if(primes.containsAll(perms)) {
            circularPrimes.addAll(perms);
            // Here I want to do something to the effect of removing all elements in perms from primes
        }
    }
while(it.hasNext()) {
    Integer currentNum = it.next();
    if (!circularPrimes.contains(currentNum)) {
        Set<Integer> perms = getAllRotations(currentNum); 

        if(primes.containsAll(perms)) {
            circularPrimes.addAll(perms); 
        }
    }

}