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:
java.util.Iterator<E>
- Direct Known Subclasses:
SnapshotCloneIterable.LocalCloneIterator
public class CloneIterator<E> extends java.lang.Object implements java.util.Iterator<E>ACloneIteratoriterates 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
CloneIteratordoes not support theremove()operation; this is because it does not have access to the original collection. But if theCloneIteratoris supplied with anCloneIterator.Removerit will delegate theremove()operation to theCloneIterator.Remover. Alternatively, a subclass can override theremove(Object)method.- See Also:
- LiveCloneIterable, SnapshotCloneIterable
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceCloneIterator.Remover<T>Used byCloneIteratorto remove elements from the original collection; since the iterator does not have direct access to the original collection.
-
Constructor Summary
Constructors Modifier Constructor Description CloneIterator(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(java.util.Collection<? extends E> collection)Construct an iterator on a copy of the specified collection.CloneIterator(java.util.Collection<? extends E> collection, CloneIterator.Remover<E> remover)Construct an iterator on a copy of the specified collection.protectedCloneIterator(CloneIterator.Remover<E> remover, java.lang.Object... array)Internal constructor used by subclasses.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanhasNext()protected EnestedNext()The collection passed in during construction held elements of typeE, so this cast is not a problem.Enext()voidremove()protected voidremove(E e)Remove the specified element from the original collection.
-
-
-
Constructor Detail
-
CloneIterator
public CloneIterator(java.util.Collection<? extends E> collection)
Construct an iterator on a copy of the specified collection. Theremove()method will not be supported, unless a subclass overrides theremove(Object).
-
CloneIterator
public CloneIterator(E[] array)
Construct an iterator on a copy of the specified array. Theremove()method will not be supported, unless a subclass overrides theremove(Object).
-
CloneIterator
public CloneIterator(java.util.Collection<? extends E> collection, CloneIterator.Remover<E> remover)
Construct an iterator on a copy of the specified collection. Use the specified remover to remove objects from the original collection.
-
CloneIterator
public CloneIterator(E[] array, CloneIterator.Remover<E> remover)
Construct an iterator on a copy of the specified array. Use the specified remover to remove objects from the original array.
-
CloneIterator
protected CloneIterator(CloneIterator.Remover<E> remover, java.lang.Object... array)
Internal constructor used by subclasses. Swap order of arguments to prevent collision with other constructor. The passed in array will *not* be cloned.
-
-
Method Detail
-
hasNext
public boolean hasNext()
- Specified by:
hasNextin interfacejava.util.Iterator<E>
-
remove
public void remove()
- Specified by:
removein interfacejava.util.Iterator<E>
-
nestedNext
protected E 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
protected void remove(E e)
Remove the specified element from the original collection.This method can be overridden by a subclass as an alternative to building a
CloneIterator.Remover.
-
-