Class SnapshotCloneIterable<E>
java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.utility.iterable.CloneIterable<E>
org.eclipse.persistence.jpa.jpql.tools.utility.iterable.SnapshotCloneIterable<E>
- Type Parameters:
E- the type of elements returned by the iterable's iterator
- All Implemented Interfaces:
Iterable<E>
A
SnapshotCloneIterable returns an iterator on a "snapshot" of a
collection, allowing for concurrent access to the original collection. A
copy of the collection is created when the iterable is constructed.
As a result, the contents of the collection will be the same with
every call to iterator().
The original collection passed to the SnapshotCloneIterable's
constructor should be thread-safe (e.g. Vector);
otherwise you run the risk of a corrupted collection.
By default, the iterator returned by a SnapshotCloneIterable does not
support the Iterator.remove() operation; this is because it does not
have access to the original collection. But if the SnapshotCloneIterable
is supplied with a CloneIterator.Remover
it will delegate the
Iterator.remove() operation to the Remover.
Alternatively, a subclass can override the iterable's CloneIterable.remove(Object)
method.
This iterable is useful for multiple passes over a collection that should not be changed (e.g. by another thread) between passes.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classprovide access to "internal" constructorNested classes/interfaces inherited from class org.eclipse.persistence.jpa.jpql.tools.utility.iterable.CloneIterable
CloneIterable.DefaultRemover -
Constructor Summary
ConstructorsConstructorDescriptionSnapshotCloneIterable(Collection<? extends E> collection) Construct a "snapshot" iterable for the specified collection.SnapshotCloneIterable(Collection<? extends E> collection, CloneIterator.Remover<E> remover) Construct a "snapshot" iterable for the specified collection.SnapshotCloneIterable(Iterator<? extends E> iterator) Construct a "snapshot" iterable for the specified iterator.SnapshotCloneIterable(Iterator<? extends E> iterator, CloneIterator.Remover<E> remover) Construct a "snapshot" iterable for the specified iterator. -
Method Summary
Methods inherited from class org.eclipse.persistence.jpa.jpql.tools.utility.iterable.CloneIterable
buildDefaultRemover, removeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
SnapshotCloneIterable
Construct a "snapshot" iterable for the specified iterator. TheIterator.remove()operation will not be supported by the iterator returned byiterator()unless a subclass overrides the iterable'sCloneIterable.remove(Object)method. -
SnapshotCloneIterable
Construct a "snapshot" iterable for the specified iterator. The specified remover will be used by any generated iterators to remove objects from the original collection. -
SnapshotCloneIterable
Construct a "snapshot" iterable for the specified collection. TheIterator.remove()operation will not be supported by the iterator returned byiterator()unless a subclass overrides the iterable'sCloneIterable.remove(Object)method. -
SnapshotCloneIterable
Construct a "snapshot" iterable for the specified collection. The specified remover will be used by any generated iterators to remove objects from the original collection.
-
-
Method Details