Interface Enumerator<T>

Type Parameters:
T - Element type
All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
CartesianProductEnumerator, CsvEnumerator, DelegatingEnumerator, GeodeSimpleEnumerator, JsonEnumerator, KafkaMessageEnumerator, MemoryEnumerator, OsQuery, SplunkConnectionImpl.SplunkResultEnumerator, TransformedEnumerator

@Covariant(0) public interface Enumerator<T> extends AutoCloseable
Supports a simple iteration over a collection.

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.

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes this enumerable and releases resources.
    Gets the current element in the collection.
    boolean
    Advances the enumerator to the next element of the collection.
    void
    Sets the enumerator to its initial position, which is before the first element in the collection.
  • Method Details

    • current

      T current()
      Gets the current element in the collection.

      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.

      Returns:
      Current element
      Throws:
      ConcurrentModificationException - if collection has been modified
      NoSuchElementException - if moveToNext has not been called, has not been called since the most recent call to reset, or returned false
    • moveNext

      boolean moveNext()
      Advances the enumerator to the next element of the collection.

      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.

      Returns:
      true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection
    • reset

      void reset()
      Sets the enumerator to its initial position, which is before the first element in the collection.

      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.

      Notes to Implementers

      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().

    • close

      void close()
      Closes this enumerable and releases resources.

      This method is idempotent. Calling it multiple times has the same effect as calling it once.

      Specified by:
      close in interface AutoCloseable