E
- the type of elements returned by the iteratorpublic class CloneListIterator<E>
extends java.lang.Object
implements java.util.ListIterator<E>
CloneListIterator
iterates over a copy of a list,
allowing for concurrent access to the original list.
The original list passed to the CloneListIterator
's
constructor should be synchronized; otherwise you run the risk of
a corrupted list (e.g. Vector
.
By default, a CloneListIterator
does not support the
modification operations; this is because it does not have
access to the original list. But if the CloneListIterator
is supplied with a CloneListIterator.Mutator
it will delegate the
modification operations to the CloneListIterator.Mutator
.
Alternatively, a subclass can override the modification methods.
org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable
,
org.eclipse.jpt.common.utility.internal.iterables.SnapshotCloneListIterable
Modifier and Type | Class and Description |
---|---|
static interface |
CloneListIterator.Mutator<T>
Used by
CloneListIterator to remove
elements from the original list; since the list iterator
does not have direct access to the original list. |
Modifier | Constructor and Description |
---|---|
protected |
CloneListIterator(CloneListIterator.Mutator<E> mutator,
java.lang.Object... array)
Internal constructor used by subclasses.
|
|
CloneListIterator(E[] array)
Construct a list iterator on a copy of the specified array.
|
|
CloneListIterator(E[] array,
CloneListIterator.Mutator<E> mutator)
Construct a list iterator on a copy of the specified array.
|
|
CloneListIterator(java.util.List<? extends E> list)
Construct a list iterator on a copy of the specified list.
|
|
CloneListIterator(java.util.List<? extends E> list,
CloneListIterator.Mutator<E> mutator)
Construct a list iterator on a copy of the specified list.
|
Modifier and Type | Method and Description |
---|---|
void |
add(E o) |
protected void |
add(int index,
E o)
Add the specified element to the original list.
|
boolean |
hasNext() |
boolean |
hasPrevious() |
protected E |
nestedNext()
The list passed in during construction held elements of type
E ,
so this cast is not a problem. |
protected E |
nestedPrevious()
The list passed in during construction held elements of type
E ,
so this cast is not a problem. |
E |
next() |
int |
nextIndex() |
E |
previous() |
int |
previousIndex() |
void |
remove() |
protected void |
remove(int index)
Remove the specified element from the original list.
|
void |
set(E o) |
protected void |
set(int index,
E o)
Set the specified element in the original list.
|
public CloneListIterator(E[] array)
public CloneListIterator(E[] array, CloneListIterator.Mutator<E> mutator)
public CloneListIterator(java.util.List<? extends E> list)
public CloneListIterator(java.util.List<? extends E> list, CloneListIterator.Mutator<E> mutator)
protected CloneListIterator(CloneListIterator.Mutator<E> mutator, java.lang.Object... array)
protected void add(int index, E o)
This method can be overridden by a subclass as an
alternative to building a CloneListIterator.Mutator
.
public boolean hasNext()
public boolean hasPrevious()
hasPrevious
in interface java.util.ListIterator<E>
protected E nestedNext()
E
,
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[]
).protected E nestedPrevious()
E
,
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[]
).public E next()
public int nextIndex()
nextIndex
in interface java.util.ListIterator<E>
public int previousIndex()
previousIndex
in interface java.util.ListIterator<E>
public void remove()
protected void remove(int index)
This method can be overridden by a subclass as an
alternative to building a CloneListIterator.Mutator
.
protected void set(int index, E o)
This method can be overridden by a subclass as an
alternative to building a CloneListIterator.Mutator
.