Package: groovy.util

## [Java] Class ObservableList.ObservableIterator

- groovy.util.ObservableList.ObservableIterator

- All Implemented Interfaces and Traits:
    Iterator

      protected class ObservableList.ObservableIterator
      extends Object
      implements Iterator

  Iterator wrapper that reports removals as observable list events.

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `protected int` | `cursor` | Current list index for iterator-driven updates.

  - ### Constructor Summary

    Constructors
    Constructor and description
    `ObservableIterator(Iterator iterDelegate)` Creates an observable iterator around the supplied delegate.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public Iterator` | `getDelegate()` Returns the wrapped iterator.
    `` | `public boolean` | `hasNext()` Returns `true` if the iteration has more elements. (In other words, returns `true` if next would return an element rather than throwing an exception.) Returns: `true` if the iteration has more elements
    `` | `public Object` | `next()` Returns the next element in the iteration. throws: NoSuchElementException if the iteration has no more elements Returns: the next element in the iteration
    `` | `public void` | `remove()` Removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call to next. The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method, unless an overriding class has specified a concurrent modification policy. The behavior of an iterator is unspecified if this method is called after a call to the forEachRemaining method. throws: UnsupportedOperationException if the `remove` operation is not supported by this iterator throws: IllegalStateException if the `next` method has not yet been called, or the `remove` method has already been called after the last call to the `next` method Implementation Requirements: The default implementation throws an instance of UnsupportedOperationException and performs no other action.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### protected int cursor

      Current list index for iterator-driven updates.

  - ### Constructor Detail

    - #### public ObservableIterator(Iterator iterDelegate)

      Creates an observable iterator around the supplied delegate.

      Parameters:
        `iterDelegate` - the backing iterator

  - ### Method Detail

    - #### public Iterator getDelegate()

      Returns the wrapped iterator.

      Returns:
        the backing iterator

    - #### public boolean hasNext()

      Returns `true` if the iteration has more elements. (In other words, returns `true` if next would return an element rather than throwing an exception.)

      Returns:
        `true` if the iteration has more elements

    - #### public Object next()

      Returns the next element in the iteration.

      throws:
        NoSuchElementException if the iteration has no more elements
      Returns:
        the next element in the iteration

    - #### public void remove()

      Removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call to next.

      The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method, unless an overriding class has specified a concurrent modification policy.

      The behavior of an iterator is unspecified if this method is called after a call to the forEachRemaining method.

      throws:
        UnsupportedOperationException if the `remove` operation is not supported by this iterator
      throws:
        IllegalStateException if the `next` method has not yet been called, or the `remove` method has already been called after the last call to the `next` method
      Implementation Requirements:
        The default implementation throws an instance of UnsupportedOperationException and performs no other action.