# Class SortedList<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
javafx.collections.ObservableListBase<E>
javafx.collections.transformation.TransformationList<E,E>
javafx.collections.transformation.SortedList<E>

Type Parameters:
  `E` - the list element type

All Implemented Interfaces:
  `Iterable<E>, Collection<E>, List<E>, SequencedCollection<E>, Observable, ObservableList<E>`

public final class SortedList<E> extends TransformationList<E,E>
Wraps an ObservableList and sorts its content. All changes in the ObservableList are propagated immediately to the SortedList. Note: invalid SortedList (as a result of broken comparison) doesn't send any notification to listeners on becoming valid again.

Since:
  JavaFX 8.0
See Also:
  - `TransformationList`

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final ObjectProperty<Comparator<? super E>>`
  `comparator`
  The comparator that denotes the order of this SortedList.

- ## Field Summary

  ### Fields declared in class AbstractList

  `modCount`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SortedList(ObservableList<? extends E> source)`
  Constructs a new unordered SortedList wrapper around the source list.
  `SortedList(ObservableList<? extends E> source, Comparator<? super E> comparator)`
  Creates a new SortedList wrapped around the source list.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final ObjectProperty<Comparator<? super E>>`
  `comparatorProperty()`
  The comparator that denotes the order of this SortedList.
  `E`
  `get(int index)`
  Returns the element at the specified position in this list.
  `final Comparator<? super E>`
  `getComparator()`
  Gets the value of the `comparator` property.
  `int`
  `getSourceIndex(int index)`
  Maps the index of this list's element to an index in the direct source list.
  `int`
  `getViewIndex(int index)`
  Maps the index of the direct source list's element to an index in this list.
  `final void`
  `setComparator(Comparator<? super E> comparator)`
  Sets the value of the `comparator` property.
  `int`
  `size()`
  Returns the number of elements in this list.
  `protected void`
  `sourceChanged(ListChangeListener.Change<? extends E> c)`
  Called when a change from the source is triggered.

  ### Methods declared in class TransformationList

  `getSource, getSourceIndexFor, isInTransformationChain`

  ### Methods declared in class ObservableListBase

  `addAll, addListener, addListener, beginChange, endChange, fireChange, hasListeners, nextAdd, nextPermutation, nextRemove, nextRemove, nextReplace, nextSet, nextUpdate, remove, removeAll, removeListener, removeListener, retainAll, setAll, setAll`

  ### Methods declared in class AbstractList

  `add, add, addAll, clear, equals, hashCode, indexOf, iterator, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subList`

  ### Methods declared in class AbstractCollection

  `addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString`

  ### Methods declared in class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods declared in interface Collection

  `parallelStream, removeIf, stream, toArray`

  ### Methods declared in interface Iterable

  `forEach`

  ### Methods declared in interface List

  `add, add, addAll, addAll, addFirst, addLast, clear, contains, containsAll, equals, getFirst, getLast, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeFirst, removeLast, replaceAll, retainAll, reversed, set, sort, spliterator, subList, toArray, toArray`

  ### Methods declared in interface Observable

  `subscribe`

  ### Methods declared in interface ObservableList

  `filtered, replaceRange, sorted, sorted`

- ## Property Details

  - ### comparator

    public final ObjectProperty<Comparator<? super E>> comparatorProperty
    The comparator that denotes the order of this SortedList. Null for unordered SortedList.
    See Also:
      - `getComparator()`
      - `setComparator(Comparator)`
      - `comparatorProperty()`

- ## Constructor Details

  - ### SortedList

    public SortedList(ObservableList<? extends E> source, Comparator<? super E> comparator)
    Creates a new SortedList wrapped around the source list. The source list will be sorted using the comparator provided. If null is provided, the list stays unordered and is equal to the source list.
    Parameters:
      `source` - a list to wrap
      `comparator` - a comparator to use or null for unordered List

  - ### SortedList

    public SortedList(ObservableList<? extends E> source)
    Constructs a new unordered SortedList wrapper around the source list.
    Parameters:
      `source` - the source list
    See Also:
      - `SortedList(javafx.collections.ObservableList, java.util.Comparator)`

- ## Method Details

  - ### sourceChanged

    protected void sourceChanged(ListChangeListener.Change<? extends E> c)
    Description copied from class: `TransformationList`
    Called when a change from the source is triggered.
    Specified by:
      `sourceChanged` in class `TransformationList<E,E>`
    Parameters:
      `c` - the change

  - ### comparatorProperty

    public final ObjectProperty<Comparator<? super E>> comparatorProperty()
    The comparator that denotes the order of this SortedList. Null for unordered SortedList.
    Returns:
      the `comparator` property
    See Also:
      - `getComparator()`
      - `setComparator(Comparator)`

  - ### getComparator

    public final Comparator<? super E> getComparator()
    Gets the value of the `comparator` property.
    Property description:
      The comparator that denotes the order of this SortedList. Null for unordered SortedList.
    Returns:
      the value of the `comparator` property
    See Also:
      - `setComparator(Comparator)`
      - `comparatorProperty()`

  - ### setComparator

    public final void setComparator(Comparator<? super E> comparator)
    Sets the value of the `comparator` property.
    Property description:
      The comparator that denotes the order of this SortedList. Null for unordered SortedList.
    Parameters:
      `comparator` - the value for the `comparator` property
    See Also:
      - `getComparator()`
      - `comparatorProperty()`

  - ### get

    public E get(int index)
    Returns the element at the specified position in this list.
    Specified by:
      `get` in interface `List<E>`
    Specified by:
      `get` in class `AbstractList<E>`
    Parameters:
      `index` - index of the element to return
    Returns:
      the element at the specified position in this list

  - ### size

    public int size()
    Returns the number of elements in this list.
    Specified by:
      `size` in interface `Collection<E>`
    Specified by:
      `size` in interface `List<E>`
    Specified by:
      `size` in class `AbstractCollection<E>`
    Returns:
      the number of elements in this list

  - ### getSourceIndex

    public int getSourceIndex(int index)
    Description copied from class: `TransformationList`
    Maps the index of this list's element to an index in the direct source list.
    Specified by:
      `getSourceIndex` in class `TransformationList<E,E>`
    Parameters:
      `index` - the index in this list
    Returns:
      the index of the element's origin in the source list
    See Also:
      - `TransformationList.getSource()`

  - ### getViewIndex

    public int getViewIndex(int index)
    Description copied from class: `TransformationList`
    Maps the index of the direct source list's element to an index in this list.
    Specified by:
      `getViewIndex` in class `TransformationList<E,E>`
    Parameters:
      `index` - the index in the source list
    Returns:
      the index of the element in this list if it is contained in this list or negative value otherwise
    See Also:
      - `TransformationList.getSource()`
      - `TransformationList.getSourceIndex(int)`