Class SnapshotCloneIterable<E>

  • Type Parameters:
    E - the type of elements returned by the iterable's iterator
    All Implemented Interfaces:
    java.lang.Iterable<E>

    public class SnapshotCloneIterable<E>
    extends CloneIterable<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:
    CloneIterator, LiveCloneIterable, SnapshotCloneListIterable
    • Constructor Detail

      • SnapshotCloneIterable

        public SnapshotCloneIterable​(java.util.Iterator<? extends E> iterator)
        Construct a "snapshot" iterable for the specified iterator. The Iterator.remove() operation will not be supported by the iterator returned by iterator() unless a subclass overrides the iterable's CloneIterable.remove(Object) method.
      • SnapshotCloneIterable

        public SnapshotCloneIterable​(java.util.Iterator<? extends E> iterator,
                                     CloneIterator.Remover<E> remover)
        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

        public SnapshotCloneIterable​(java.util.Collection<? extends E> collection)
        Construct a "snapshot" iterable for the specified collection. The Iterator.remove() operation will not be supported by the iterator returned by iterator() unless a subclass overrides the iterable's CloneIterable.remove(Object) method.
      • SnapshotCloneIterable

        public SnapshotCloneIterable​(java.util.Collection<? extends E> collection,
                                     CloneIterator.Remover<E> remover)
        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 Detail

      • iterator

        public java.util.Iterator<E> iterator()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object