Class CloneIterator<E>

  • Type Parameters:
    E - the type of elements returned by the iterator
    All Implemented Interfaces:
    java.util.Iterator<E>

    public class CloneIterator<E>
    extends java.lang.Object
    implements java.util.Iterator<E>
    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:
    LiveCloneIterable, SnapshotCloneIterable
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  CloneIterator.Remover<T>
      Used by CloneIterator to remove elements from the original collection; since the iterator does not have direct access to the original collection.
    • Constructor Summary

      Constructors 
      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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean hasNext()  
      E next()  
      void remove()  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Constructor Detail

      • CloneIterator

        public CloneIterator​(java.util.Collection<? extends E> collection)
        Construct an iterator on a copy of the specified collection. The remove() method will not be supported, unless a subclass overrides the remove(Object).
      • CloneIterator

        public CloneIterator​(E[] array)
        Construct an iterator on a copy of the specified array. The remove() method will not be supported, unless a subclass overrides the remove(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.
    • Method Detail

      • hasNext

        public boolean hasNext()
        Specified by:
        hasNext in interface java.util.Iterator<E>
      • next

        public E next()
        Specified by:
        next in interface java.util.Iterator<E>
      • remove

        public void remove()
        Specified by:
        remove in interface java.util.Iterator<E>