private class SequencedHashMap.OrderedIterator
extends java.lang.Object
implements java.util.Iterator
Modifier and Type | Field and Description |
---|---|
private long |
expectedModCount
Holds the expected modification count.
|
private SequencedHashMap.Entry |
pos
Holds the "current" position in the iterator.
|
private int |
returnType
Holds the type that should be returned from the iterator.
|
Constructor and Description |
---|
OrderedIterator(int returnType)
Construct an iterator over the sequenced elements in the order in which
they were added.
|
Modifier and Type | Method and Description |
---|---|
boolean |
hasNext()
Returns whether there is any additional elements in the iterator to be
returned.
|
java.lang.Object |
next()
Returns the next element from the iterator.
|
void |
remove()
Removes the last element returned from the
next() method from
the sequenced map. |
private int returnType
SequencedHashMap.KEY
, SequencedHashMap.VALUE
, or SequencedHashMap.ENTRY
. To
save a tiny bit of memory, this field is also used as a marker for when
remove has been called on the current object to prevent a second remove
on the same element. Essentially, if this value is negative (i.e. the
bit specified by SequencedHashMap.REMOVED_MASK
is set), the current position
has been removed. If positive, remove can still be called.private SequencedHashMap.Entry pos
private transient long expectedModCount
public OrderedIterator(int returnType)
next()
method returns the type specified
by returnType
which must be either SequencedHashMap.KEY
, SequencedHashMap.VALUE
, or SequencedHashMap.ENTRY
.public boolean hasNext()
hasNext
in interface java.util.Iterator
true
if there are more elements left to be
returned from the iterator; false
otherwise.public java.lang.Object next()
next
in interface java.util.Iterator
java.util.NoSuchElementException
- if there are no more elements in the
iterator.java.util.ConcurrentModificationException
- if a modification occurs in
the underlying map.public void remove()
next()
method from
the sequenced map.remove
in interface java.util.Iterator
java.lang.IllegalStateException
- if there isn't a "last element" to be
removed. That is, if next()
has never been called, or if
remove()
was already called on the element.java.util.ConcurrentModificationException
- if a modification occurs in
the underlying map.