# 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