Class CloneIterator<E>
java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.utility.iterator.CloneIterator<E>
- Type Parameters:
E- the type of elements returned by the iterator
- All Implemented Interfaces:
Iterator<E>
- Direct Known Subclasses:
SnapshotCloneIterable.LocalCloneIterator
A
CloneIterator iterates over a copy of a collection,
allowing for concurrent access to the original collection.
The original collection passed to the CloneIterator's
constructor should be synchronized (e.g. Vector);
otherwise you run the risk of a corrupted collection.
By default, a CloneIterator does not support the
remove() operation; this is because it does not have
access to the original collection. But if the CloneIterator
is supplied with an CloneIterator.Remover it will delegate the
remove() operation to the CloneIterator.Remover.
Alternatively, a subclass can override the remove(Object)
method.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceUsed byCloneIteratorto remove elements from the original collection; since the iterator does not have direct access to the original collection. -
Constructor Summary
ConstructorsModifierConstructorDescriptionCloneIterator(E[] array) Construct an iterator on a copy of the specified array.CloneIterator(E[] array, CloneIterator.Remover<E> remover) Construct an iterator on a copy of the specified array.CloneIterator(Collection<? extends E> collection) Construct an iterator on a copy of the specified collection.CloneIterator(Collection<? extends E> collection, CloneIterator.Remover<E> remover) Construct an iterator on a copy of the specified collection.protectedCloneIterator(CloneIterator.Remover<E> remover, Object... array) Internal constructor used by subclasses. -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
CloneIterator
Construct an iterator on a copy of the specified collection. Theremove()method will not be supported, unless a subclass overrides theremove(Object). -
CloneIterator
Construct an iterator on a copy of the specified array. Theremove()method will not be supported, unless a subclass overrides theremove(Object). -
CloneIterator
Construct an iterator on a copy of the specified collection. Use the specified remover to remove objects from the original collection. -
CloneIterator
Construct an iterator on a copy of the specified array. Use the specified remover to remove objects from the original array. -
CloneIterator
Internal constructor used by subclasses. Swap order of arguments to prevent collision with other constructor. The passed in array will *not* be cloned.
-
-
Method Details
-
hasNext
public boolean hasNext() -
next
-
remove
public void remove() -
nestedNext
The collection passed in during construction held elements of typeE, so this cast is not a problem. We need this cast because all the elements of the original collection were copied into an object array (Object[]). -
remove
Remove the specified element from the original collection.This method can be overridden by a subclass as an alternative to building a
CloneIterator.Remover.
-