# SplayTreeSet<E> class

A Set of objects that can be ordered relative to each other.

The set is based on a self-balancing binary tree. It allows most operations in amortized logarithmic time.

Elements of the set are compared using the `compare` function passed in the constructor, both for ordering and for equality. If the set contains only an object `a`, then `set.contains(b)` will return `true` if and only if `compare(a, b) == 0`, and the value of `a == b` is not even checked. If the compare function is omitted, the objects are assumed to be Comparable, and are compared using their Comparable.compareTo method. Non-comparable objects (including `null`) will not work as an element in that case.

Mixed in types
  - IterableMixin<E>
  - SetMixin<E>

## Constructors

SplayTreeSet([int compare(E key1, E key2), bool isValidKey(dynamic potentialKey) ])
  Create a new SplayTreeSet with the given compare function. [...]
SplayTreeSet.from(Iterable elements, [ int compare(E key1, E key2), bool isValidKey(dynamic potentialKey) ])
  Creates a SplayTreeSet that contains all `elements`. [...]
  factory
SplayTreeSet.of(Iterable<E> elements, [ int compare(E key1, E key2), bool isValidKey(dynamic potentialKey) ])
  Creates a SplayTreeSet from `elements`. [...]
  factory

## Properties

first → E
  Returns the first element. [...]
  read-only, override
isEmpty → bool
  Returns `true` if there are no elements in this collection. [...]
  read-only, override
isNotEmpty → bool
  Returns true if there is at least one element in this collection. [...]
  read-only, override
iterator → Iterator<E>
  Provides an iterator that iterates over the elements of this set. [...]
  read-only, override
last → E
  Returns the last element. [...]
  read-only, override
length → int
  Returns the number of elements in this. [...]
  read-only, override
single → E
  Checks that this iterable has only one element, and returns that element. [...]
  read-only, override
hashCode → int
  The hash code for this object. [...]
  read-only, inherited
runtimeType → Type
  A representation of the runtime type of the object.
  read-only, inherited

## Methods

add(E element) → bool
  Adds `value` to the set. [...]
  override
addAll(Iterable<E> elements) → void
  Adds all `elements` to this Set. [...]
  override
cast<R>() → Set<R>
  Provides a view of this iterable as an iterable of `R` instances. [...]
  override
clear() → void
  Removes all elements in the set.
  override
contains(Object element) → bool
  Returns true if the collection contains an element equal to `element`. [...]
  override
difference(Set<Object> other) → Set<E>
  Returns a new set with the elements of this that are not in `other`. [...]
  override
intersection(Set<Object> other) → Set<E>
  Returns a new set which is the intersection between this set and `other`. [...]
  override
lookup(Object object) → E
  If an object equal to `object` is in the set, return it. [...]
  override
remove(Object object) → bool
  Removes `value` from the set. Returns true if `value` was in the set. Returns false otherwise. The method has no effect if `value` value was not in the set.
  override
removeAll(Iterable<Object> elements) → void
  Removes each element of `elements` from this set.
  override
retainAll(Iterable<Object> elements) → void
  Removes all elements of this set that are not elements in `elements`. [...]
  override
toSet() → Set<E>
  Creates a Set containing the same elements as this iterable. [...]
  override
toString() → String
  Returns a string representation of this object.
  override
union(Set<E> other) → Set<E>
  Returns a new set which contains all the elements of this set and `other`. [...]
  override
any(bool test(E element)) → bool
  Checks whether any element of this iterable satisfies `test`. [...]
  inherited
containsAll(Iterable<Object> other) → bool
  Returns whether this Set contains all the elements of `other`.
  inherited
elementAt(int index) → E
  Returns the `index`th element. [...]
  inherited
every(bool f(E element)) → bool
  Checks whether every element of this iterable satisfies `test`. [...]
  inherited
expand<T>(Iterable<T> f(E element)) → Iterable<T>
  Expands each element of this Iterable into zero or more elements. [...]
  inherited
firstWhere(bool test(E value), { E orElse() }) → E
  Returns the first element that satisfies the given predicate `test`. [...]
  inherited
fold<T>(T initialValue, T combine(T previousValue, E element)) → T
  Reduces a collection to a single value by iteratively combining each element of the collection with an existing value [...]
  inherited
followedBy(Iterable<E> other) → Iterable<E>
  Returns the lazy concatentation of this iterable and `other`. [...]
  inherited
forEach(void f(E element)) → void
  Applies the function `f` to each element of this collection in iteration order.
  inherited
join([String separator = "" ]) → String
  Converts each element to a String and concatenates the strings. [...]
  inherited
lastWhere(bool test(E value), { E orElse() }) → E
  Returns the last element that satisfies the given predicate `test`. [...]
  inherited
map<T>(T f(E element)) → Iterable<T>
  Returns a new lazy Iterable with elements that are created by calling `f` on each element of this `Iterable` in iteration order. [...]
  inherited
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a non-existent method or property is accessed. [...]
  inherited
reduce(E combine(E value, E element)) → E
  Reduces a collection to a single value by iteratively combining elements of the collection using the provided function. [...]
  inherited
removeWhere(bool test(E element)) → void
  Removes all elements of this set that satisfy `test`.
  inherited
retainWhere(bool test(E element)) → void
  Removes all elements of this set that fail to satisfy `test`.
  inherited
singleWhere(bool test(E value), { E orElse() }) → E
  Returns the single element that satisfies `test`. [...]
  inherited
skip(int n) → Iterable<E>
  Returns an Iterable that provides all but the first `count` elements. [...]
  inherited
skipWhile(bool test(E value)) → Iterable<E>
  Returns an `Iterable` that skips leading elements while `test` is satisfied. [...]
  inherited
take(int n) → Iterable<E>
  Returns a lazy iterable of the `count` first elements of this iterable. [...]
  inherited
takeWhile(bool test(E value)) → Iterable<E>
  Returns a lazy iterable of the leading elements satisfying `test`. [...]
  inherited
toList({bool growable: true }) → List<E>
  Creates a List containing the elements of this Iterable. [...]
  inherited
where(bool f(E element)) → Iterable<E>
  Returns a new lazy Iterable with all elements that satisfy the predicate `test`. [...]
  inherited
whereType<T>() → Iterable<T>
  Returns a new lazy Iterable with all elements that have type `T`. [...]
  inherited

## Operators

operator ==(dynamic other) → bool
  The equality operator. [...]
  inherited