# Class CursorableLinkedList.SubCursor<E>

java.lang.Object
org.apache.commons.collections4.list.AbstractLinkedList.LinkedListIterator<E>
org.apache.commons.collections4.list.CursorableLinkedList.Cursor<E>
org.apache.commons.collections4.list.CursorableLinkedList.SubCursor<E>

Type Parameters:
  `E` - the type of elements in this cursor.

All Implemented Interfaces:
  `Iterator<E>`, `ListIterator<E>`, `OrderedIterator<E>`

Enclosing class:
  `CursorableLinkedList<E>`

protected static class CursorableLinkedList.SubCursor<E> extends CursorableLinkedList.Cursor<E>
A cursor for the sublist based on LinkedSubListIterator.

Since:
  3.2

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final AbstractLinkedList.LinkedSubList<E>`
  `sub`
  The parent list

  ### Fields inherited from class org.apache.commons.collections4.list.AbstractLinkedList.LinkedListIterator

  `current, expectedModCount, next, nextIndex, parent`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `SubCursor(AbstractLinkedList.LinkedSubList<E> sub, int index)`
  Constructs a new cursor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(E obj)`
  Adds an object to the list.
  `boolean`
  `hasNext()`
  `boolean`
  `hasPrevious()`
  Checks to see if there is a previous element that can be iterated to.
  `int`
  `nextIndex()`
  Gets the index of the next element to be returned.
  `void`
  `remove()`
  Removes the item last returned by this iterator.

  ### Methods inherited from class org.apache.commons.collections4.list.CursorableLinkedList.Cursor

  `checkModCount, close, nodeChanged, nodeInserted, nodeRemoved`

  ### Methods inherited from class org.apache.commons.collections4.list.AbstractLinkedList.LinkedListIterator

  `getLastNodeReturned, next, previous, previousIndex, set`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.util.Iterator

  `forEachRemaining`

- ## Field Details

  - ### sub

    protected final AbstractLinkedList.LinkedSubList<E> sub
    The parent list

- ## Constructor Details

  - ### SubCursor

    protected SubCursor(AbstractLinkedList.LinkedSubList<E> sub, int index)
    Constructs a new cursor.
    Parameters:
      `sub` - the sub list
      `index` - the index to start from

- ## Method Details

  - ### add

    public void add(E obj)
    Description copied from class: `CursorableLinkedList.Cursor`
    Adds an object to the list. The object added here will be the new 'previous' in the iterator.
    Specified by:
      `add` in interface `ListIterator<E>`
    Overrides:
      `add` in class `CursorableLinkedList.Cursor<E>`
    Parameters:
      `obj` - the object to add

  - ### hasNext

    public boolean hasNext()
    Specified by:
      `hasNext` in interface `Iterator<E>`
    Specified by:
      `hasNext` in interface `ListIterator<E>`
    Overrides:
      `hasNext` in class `AbstractLinkedList.LinkedListIterator<E>`

  - ### hasPrevious

    public boolean hasPrevious()
    Description copied from interface: `OrderedIterator`
    Checks to see if there is a previous element that can be iterated to.
    Specified by:
      `hasPrevious` in interface `ListIterator<E>`
    Specified by:
      `hasPrevious` in interface `OrderedIterator<E>`
    Overrides:
      `hasPrevious` in class `AbstractLinkedList.LinkedListIterator<E>`
    Returns:
      `true` if the iterator has a previous element

  - ### nextIndex

    public int nextIndex()
    Description copied from class: `CursorableLinkedList.Cursor`
    Gets the index of the next element to be returned.
    Specified by:
      `nextIndex` in interface `ListIterator<E>`
    Overrides:
      `nextIndex` in class `CursorableLinkedList.Cursor<E>`
    Returns:
      the next index

  - ### remove

    public void remove()
    Description copied from class: `CursorableLinkedList.Cursor`
    Removes the item last returned by this iterator.

    There may have been subsequent alterations to the list since you obtained this item, however you can still remove it. You can even remove it if the item is no longer in the main list. However, you can't call this method on the same iterator more than once without calling next() or previous().

    Specified by:
      `remove` in interface `Iterator<E>`
    Specified by:
      `remove` in interface `ListIterator<E>`
    Overrides:
      `remove` in class `CursorableLinkedList.Cursor<E>`