I am performing iteration on two lists.

```
// events and items are two lists.

Iterator<Event> eventIterator = events.iterator();
Iterator<EventItem> itemIterator = items.iterator();

while (eventIterator.hasNext()) {

    Event event = eventIterator.next();

    while (itemIterator.hasNext()) {

        EventItem item = itemIterator.next();

        if (event.getId().equals(item.getEventId())) {

            // CLAIMED
            itemIterator.remove();
        }
    }

    // PROBLEM IS HERE.

}

```

**Problem:**

I looped through `itemIterator` to the end, and also removed the items from `itemIterator` if an item gets claimed. But, when next iteration on `eventIterator` will run, `itemIterator` is already at its end. 

How can I reset `itemIterator` to position `0` without reinitiating it using `items.iterator()` because that will bring back items removed from `itemIterator` for next iteration.

One `item` from `itemIterator` can only be claimed by one `event` from `eventIterator`. So, it doesn't make sense for me to keep that item in iteration after it is claimed. Hence, I remove the item from `itemIterator`.

I am open to alternatives if they decrease the number of iterations than the traditional for-each loop.