В идеале, то, что вы ищете, это операция сброса на итераторе.Итераторы предназначены для однонаправленного и одноразового использования, так как они не поддерживают сброс в Java.
Вы можете получить новый экземпляр итератора или использовать ListIterator интерфейс, который позволяет вам смотреть назад, используя previous ().
Edit:
Вы используете remove () на итераторе, который также удаляет элементы из исходного набора.В таком случае вам следует подумать о создании копии набора, так как вы хотите перебирать элементы заново:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorSnippet {
public static void main(String[] args) {
final HashSet<Integer> myHash = new HashSet<Integer>();
myHash.addAll(Arrays.asList(1, 2, 3, 4, 5));
// make copy before using iterator with remove
final HashSet<Integer> myHash2 = new HashSet<Integer>(myHash);
Iterator<Integer> it = myHash.iterator();
System.out.println("First go...");
while (it.hasNext()) {
System.out.println(it.next());
it.remove();
}
it = myHash2.iterator();
System.out.println("Second go...");
while (it.hasNext()) {
System.out.println(it.next());
}
}
}