E
- the type of elements returned by the iterable's iteratorpublic class SnapshotCloneIterable<E> extends CloneIterable<E>
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.
CloneIterator
,
LiveCloneIterable,
SnapshotCloneListIterable
Modifier and Type | Class and Description |
---|---|
protected static class |
SnapshotCloneIterable.LocalCloneIterator<E>
provide access to "internal" constructor
|
CloneIterable.DefaultRemover
Constructor and Description |
---|
SnapshotCloneIterable(java.util.Collection<? extends E> collection)
Construct a "snapshot" iterable for the specified collection.
|
SnapshotCloneIterable(java.util.Collection<? extends E> collection,
CloneIterator.Remover<E> remover)
Construct a "snapshot" iterable for the specified collection.
|
SnapshotCloneIterable(java.util.Iterator<? extends E> iterator)
Construct a "snapshot" iterable for the specified iterator.
|
SnapshotCloneIterable(java.util.Iterator<? extends E> iterator,
CloneIterator.Remover<E> remover)
Construct a "snapshot" iterable for the specified iterator.
|
Modifier and Type | Method and Description |
---|---|
java.util.Iterator<E> |
iterator() |
java.lang.String |
toString() |
buildDefaultRemover, remove
public SnapshotCloneIterable(java.util.Iterator<? extends E> iterator)
Iterator.remove()
operation will not be supported
by the iterator returned by iterator()
unless a subclass overrides the iterable's CloneIterable.remove(Object)
method.public SnapshotCloneIterable(java.util.Iterator<? extends E> iterator, CloneIterator.Remover<E> remover)
public SnapshotCloneIterable(java.util.Collection<? extends E> collection)
Iterator.remove()
operation will not be supported
by the iterator returned by iterator()
unless a subclass overrides the iterable's CloneIterable.remove(Object)
method.public SnapshotCloneIterable(java.util.Collection<? extends E> collection, CloneIterator.Remover<E> remover)
public java.util.Iterator<E> iterator()
public java.lang.String toString()
toString
in class java.lang.Object