T
- Element typepublic interface Enumerator<T> extends Closeable
Analogous to LINQ's System.Collections.Enumerator. Unlike LINQ, if the
underlying collection has been modified it is only optional that an
implementation of the Enumerator interface detects it and throws a
ConcurrentModificationException
.
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes this enumerable and releases resources.
|
T |
current()
Gets the current element in the collection.
|
boolean |
moveNext()
Advances the enumerator to the next element of the collection.
|
void |
reset()
Sets the enumerator to its initial position, which is before the first
element in the collection.
|
T current()
After an enumerator is created or after the reset()
method is
called, the moveNext()
method must be called to advance the
enumerator to the first element of the collection before reading the
value of the current
property; otherwise, current
is
undefined.
This method also throws NoSuchElementException
if
the last call to moveNext
returned false
, which indicates
the end of the collection.
This method does not move the position of the enumerator, and
consecutive calls to current
return the same object until either
moveNext
or reset
is called.
An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to moveNext
or reset
may,
at the discretion of the implementation, throw a
ConcurrentModificationException
. If the collection is
modified between moveNext
and current
, current
returns the element that it is set to, even if the enumerator is already
invalidated.
ConcurrentModificationException
- if collection has
been modifiedNoSuchElementException
- if moveToNext
has not
been called, has not been called since the most recent call to
reset
, or returned falseboolean moveNext()
After an enumerator is created or after the reset
method is
called, an enumerator is positioned before the first element of the
collection, and the first call to the moveNext
method moves the
enumerator over the first element of the collection.
If moveNext
passes the end of the collection, the enumerator
is positioned after the last element in the collection and
moveNext
returns false
. When the enumerator is at this
position, subsequent calls to moveNext
also return false
until #reset
is called.
An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to moveNext
or reset()
may,
at the discretion of the implementation, throw a
ConcurrentModificationException
.
true
if the enumerator was successfully advanced to the
next element; false
if the enumerator has passed the end of
the collectionvoid reset()
An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to moveNext()
or reset
may,
at the discretion of the implementation, throw a
ConcurrentModificationException
.
This method is optional; it may throw
UnsupportedOperationException
.
All calls to Reset must result in the same state for the enumerator.
The preferred implementation is to move the enumerator to the beginning
of the collection, before the first element. This invalidates the
enumerator if the collection has been modified since the enumerator was
created, which is consistent with moveNext()
and
current()
.
void close()
This method is idempotent. Calling it multiple times has the same effect as calling it once.
close
in interface AutoCloseable
close
in interface Closeable
Copyright © 2012-2014 Julian Hyde. All Rights Reserved.