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
Modifier and TypeClassDescriptionstatic interface
Used byCloneIterator
to remove elements from the original collection; since the iterator does not have direct access to the original collection. -
Constructor Summary
ModifierConstructorDescriptionCloneIterator
(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.protected
CloneIterator
(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, wait
Methods 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
.
-