# Interface ObservableSet<E>

Type Parameters:
  `E` - the set element type

All Superinterfaces:
  `Collection<E>, Iterable<E>, Observable, Set<E>`

All Known Subinterfaces:
  `ObservableSetValue<E>, WritableSetValue<E>`

All Known Implementing Classes:
  `ReadOnlySetProperty, ReadOnlySetPropertyBase, ReadOnlySetWrapper, SetBinding, SetExpression, SetProperty, SetPropertyBase, SimpleSetProperty`

public interface ObservableSet<E> extends Set<E>, Observable
A set that allows observers to track changes when they occur. Implementations can be created using methods in `FXCollections` such as `observableSet`, or with a `SimpleSetProperty`.

Since:
  JavaFX 2.1
See Also:
  - `SetChangeListener`
  - `SetChangeListener.Change`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addListener(SetChangeListener<? super E> listener)`
  Add a listener to this observable set.
  `void`
  `removeListener(SetChangeListener<? super E> listener)`
  Tries to removed a listener from this observable set.

  ### Methods declared in interface Collection

  `parallelStream, removeIf, stream, toArray`

  ### Methods declared in interface Iterable

  `forEach`

  ### Methods declared in interface Observable

  `addListener, removeListener, subscribe`

  ### Methods declared in interface Set

  `add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, spliterator, toArray, toArray`

- ## Method Details

  - ### addListener

    void addListener(SetChangeListener<? super E> listener)
    Add a listener to this observable set.
    Parameters:
      `listener` - the listener for listening to the set changes

  - ### removeListener

    void removeListener(SetChangeListener<? super E> listener)
    Tries to removed a listener from this observable set. If the listener is not attached to this list, nothing happens.
    Parameters:
      `listener` - a listener to remove