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