Enumeration (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.util, interface: Enumeration
Keywords: java.util.Enumeration interface

# Interface Enumeration<E>

Type Parameters:
  `E` - the type of elements returned by this enumeration

All Known Subinterfaces:
  `NamingEnumeration<T>`

All Known Implementing Classes:
  `StringTokenizer`

public interface Enumeration<E>
An object that implements the Enumeration interface generates a series of elements, one at a time. Successive calls to the `nextElement` method return successive elements of the series.

For example, to print all elements of a `Vector<E>` v:

      for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
          System.out.println(e.nextElement());

Methods are provided to enumerate through the elements of a vector, the keys of a hashtable, and the values in a hashtable. Enumerations are also used to specify the input streams to a `SequenceInputStream`.

API Note:
  The functionality of this interface is duplicated by the `Iterator` interface. In addition, `Iterator` adds an optional remove operation, and has shorter method names. New implementations should consider using `Iterator` in preference to `Enumeration`. It is possible to adapt an `Enumeration` to an `Iterator` by using the `asIterator()` method.
Since:
  1.0
See Also:
  - `Iterator`
  - `SequenceInputStream`
  - `nextElement()`
  - `Hashtable`
  - `Hashtable.elements()`
  - `Hashtable.keys()`
  - `Vector`
  - `Vector.elements()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default Iterator<E>`
  `asIterator()`
  Returns an `Iterator` that traverses the remaining elements covered by this enumeration.
  `boolean`
  `hasMoreElements()`
  Tests if this enumeration contains more elements.
  `E`
  `nextElement()`
  Returns the next element of this enumeration if this enumeration object has at least one more element to provide.

- ## Method Details

  - ### hasMoreElements

    boolean hasMoreElements()
    Tests if this enumeration contains more elements.
    Returns:
      `true` if and only if this enumeration object contains at least one more element to provide; `false` otherwise.

  - ### nextElement

    E nextElement()
    Returns the next element of this enumeration if this enumeration object has at least one more element to provide.
    Returns:
      the next element of this enumeration.
    Throws:
      `NoSuchElementException` - if no more elements exist.

  - ### asIterator

    default Iterator<E> asIterator()
    Returns an `Iterator` that traverses the remaining elements covered by this enumeration. Traversal is undefined if any methods are called on this enumeration after the call to `asIterator`.
    API Note:
      This method is intended to help adapt code that produces `Enumeration` instances to code that consumes `Iterator` instances. For example, the `JarFile.entries()` method returns an `Enumeration<JarEntry>`. This can be turned into an `Iterator`, and then the `forEachRemaining()` method can be used:

              JarFile jarFile = ... ;
              jarFile.entries().asIterator().forEachRemaining(entry -> { ... });

      (Note that there is also a `JarFile.stream()` method that returns a `Stream` of entries, which may be more convenient in some cases.)
    Implementation Requirements:
      The default implementation returns an `Iterator` whose `hasNext` method calls this Enumeration's `hasMoreElements` method, whose `next` method calls this Enumeration's `nextElement` method, and whose `remove` method throws `UnsupportedOperationException`.
    Returns:
      an Iterator representing the remaining elements of this Enumeration
    Since:
      9