Package: groovy.util

## [Java] Class ObservableList.ObservableListIterator

- groovy.util.ObservableList.ObservableListIterator

- All Implemented Interfaces and Traits:
    ListIterator

      protected class ObservableList.ObservableListIterator
      extends ObservableList.ObservableIterator
      implements ListIterator

  List iterator wrapper that routes mutations through ObservableList.

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class ObservableList.ObservableIterator` | `cursor`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `ObservableListIterator(ListIterator iterDelegate, int index)` Creates an observable list iterator.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `add(Object o)` Inserts the specified element into the list (optional operation). The element is inserted immediately before the element that would be returned by next, if any, and after the element that would be returned by previous, if any. (If the list contains no elements, the new element becomes the sole element on the list.) The new element is inserted before the implicit cursor: a subsequent call to `next` would be unaffected, and a subsequent call to `previous` would return the new element. (This call increases by one the value that would be returned by a call to `nextIndex` or `previousIndex`.) throws: UnsupportedOperationException if the `add` method is not supported by this list iterator throws: ClassCastException if the class of the specified element prevents it from being added to this list throws: IllegalArgumentException if some aspect of this element prevents it from being added to this list Parameters: `e` - the element to insert
    `` | `public ListIterator` | `getListIterator()` Returns the wrapped list iterator.
    `` | `public boolean` | `hasPrevious()` Returns `true` if this list iterator has more elements when traversing the list in the reverse direction. (In other words, returns `true` if previous would return an element rather than throwing an exception.) Returns: `true` if the list iterator has more elements when traversing the list in the reverse direction
    `` | `public int` | `nextIndex()` Returns the index of the element that would be returned by a subsequent call to next. (Returns list size if the list iterator is at the end of the list.) Returns: the index of the element that would be returned by a subsequent call to `next`, or list size if the list iterator is at the end of the list
    `` | `public Object` | `previous()` Returns the previous element in the list and moves the cursor position backwards. This method may be called repeatedly to iterate through the list backwards, or intermixed with calls to next to go back and forth. (Note that alternating calls to `next` and `previous` will return the same element repeatedly.) throws: NoSuchElementException if the iteration has no previous element Returns: the previous element in the list
    `` | `public int` | `previousIndex()` Returns the index of the element that would be returned by a subsequent call to previous. (Returns -1 if the list iterator is at the beginning of the list.) Returns: the index of the element that would be returned by a subsequent call to `previous`, or -1 if the list iterator is at the beginning of the list
    `` | `public void` | `set(Object o)` Replaces the last element returned by next or previous with the specified element (optional operation). This call can be made only if neither remove nor add have been called after the last call to `next` or `previous`. throws: UnsupportedOperationException if the `set` operation is not supported by this list iterator throws: ClassCastException if the class of the specified element prevents it from being added to this list throws: IllegalArgumentException if some aspect of the specified element prevents it from being added to this list throws: IllegalStateException if neither `next` nor `previous` have been called, or `remove` or `add` have been called after the last call to `next` or `previous` Parameters: `e` - the element with which to replace the last element returned by `next` or `previous`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class ObservableList.ObservableIterator` | `getDelegate, hasNext, next, remove`

- - ### Constructor Detail

    - #### public ObservableListIterator(ListIterator iterDelegate, int index)

      Creates an observable list iterator.

      Parameters:
        `iterDelegate` - the backing list iterator
        `index` - the starting index

  - ### Method Detail

    - #### public void add(Object o)

      Inserts the specified element into the list (optional operation). The element is inserted immediately before the element that would be returned by next, if any, and after the element that would be returned by previous, if any. (If the list contains no elements, the new element becomes the sole element on the list.) The new element is inserted before the implicit cursor: a subsequent call to `next` would be unaffected, and a subsequent call to `previous` would return the new element. (This call increases by one the value that would be returned by a call to `nextIndex` or `previousIndex`.)

      throws:
        UnsupportedOperationException if the `add` method is not supported by this list iterator
      throws:
        ClassCastException if the class of the specified element prevents it from being added to this list
      throws:
        IllegalArgumentException if some aspect of this element prevents it from being added to this list
      Parameters:
        `e` - the element to insert

    - #### public ListIterator getListIterator()

      Returns the wrapped list iterator.

      Returns:
        the backing list iterator

    - #### public boolean hasPrevious()

      Returns `true` if this list iterator has more elements when traversing the list in the reverse direction. (In other words, returns `true` if previous would return an element rather than throwing an exception.)

      Returns:
        `true` if the list iterator has more elements when traversing the list in the reverse direction

    - #### public int nextIndex()

      Returns the index of the element that would be returned by a subsequent call to next. (Returns list size if the list iterator is at the end of the list.)

      Returns:
        the index of the element that would be returned by a subsequent call to `next`, or list size if the list iterator is at the end of the list

    - #### public Object previous()

      Returns the previous element in the list and moves the cursor position backwards. This method may be called repeatedly to iterate through the list backwards, or intermixed with calls to next to go back and forth. (Note that alternating calls to `next` and `previous` will return the same element repeatedly.)

      throws:
        NoSuchElementException if the iteration has no previous element
      Returns:
        the previous element in the list

    - #### public int previousIndex()

      Returns the index of the element that would be returned by a subsequent call to previous. (Returns -1 if the list iterator is at the beginning of the list.)

      Returns:
        the index of the element that would be returned by a subsequent call to `previous`, or -1 if the list iterator is at the beginning of the list

    - #### public void set(Object o)

      Replaces the last element returned by next or previous with the specified element (optional operation). This call can be made only if neither remove nor add have been called after the last call to `next` or `previous`.

      throws:
        UnsupportedOperationException if the `set` operation is not supported by this list iterator
      throws:
        ClassCastException if the class of the specified element prevents it from being added to this list
      throws:
        IllegalArgumentException if some aspect of the specified element prevents it from being added to this list
      throws:
        IllegalStateException if neither `next` nor `previous` have been called, or `remove` or `add` have been called after the last call to `next` or `previous`
      Parameters:
        `e` - the element with which to replace the last element returned by `next` or `previous`