# SetMixin<E> class

Mixin implementation of Set.

This class provides a base implementation of a `Set` that depends only on the abstract members: add, contains, lookup, remove, iterator, length and toSet.

Some of the methods assume that `toSet` creates a modifiable set. If using this mixin for an unmodifiable set, where `toSet` should return an unmodifiable set, it's necessary to reimplement retainAll, union, intersection and difference.

Implementations of `Set` using this mixin should consider also implementing `clear` in constant time. The default implementation works by removing every element.

Implemented types
  - Set<E>
Implementers
  - SetBase
  - SplayTreeSet

## Constructors

SetMixin()

## 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 the iterable. [...]
  read-only
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 value) → bool
  Adds `value` to the set. [...]
  override
addAll(Iterable<E> elements) → void
  Adds all `elements` to this Set. [...]
  override
any(bool test(E element)) → bool
  Checks whether any element of this iterable satisfies `test`. [...]
  override
cast<R>() → Set<R>
  Provides a view of this set as a set of `R` instances. [...]
  override
clear() → void
  Removes all elements in the set.
  override
contains(Object element) → bool
  Returns true if `value` is in the set.
  override
containsAll(Iterable<Object> other) → bool
  Returns whether this Set contains all the elements of `other`.
  override
difference(Set<Object> other) → Set<E>
  Returns a new set with the elements of this that are not in `other`. [...]
  override
elementAt(int index) → E
  Returns the `index`th element. [...]
  override
every(bool f(E element)) → bool
  Checks whether every element of this iterable satisfies `test`. [...]
  override
expand<T>(Iterable<T> f(E element)) → Iterable<T>
  Expands each element of this Iterable into zero or more elements. [...]
  override
firstWhere(bool test(E value), { E orElse() }) → E
  Returns the first element that satisfies the given predicate `test`. [...]
  override
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 [...]
  override
followedBy(Iterable<E> other) → Iterable<E>
  Returns the lazy concatentation of this iterable and `other`. [...]
  override
forEach(void f(E element)) → void
  Applies the function `f` to each element of this collection in iteration order.
  override
intersection(Set<Object> other) → Set<E>
  Returns a new set which is the intersection between this set and `other`. [...]
  override
join([String separator = "" ]) → String
  Converts each element to a String and concatenates the strings. [...]
  override
lastWhere(bool test(E value), { E orElse() }) → E
  Returns the last element that satisfies the given predicate `test`. [...]
  override
lookup(Object element) → E
  If an object equal to `object` is in the set, return it. [...]
  override
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. [...]
  override
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. [...]
  override
remove(Object value) → 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
removeWhere(bool test(E element)) → void
  Removes all elements of this set that satisfy `test`.
  override
retainAll(Iterable<Object> elements) → void
  Removes all elements of this set that are not elements in `elements`. [...]
  override
retainWhere(bool test(E element)) → void
  Removes all elements of this set that fail to satisfy `test`.
  override
singleWhere(bool test(E value), { E orElse() }) → E
  Returns the single element that satisfies `test`. [...]
  override
skip(int n) → Iterable<E>
  Returns an Iterable that provides all but the first `count` elements. [...]
  override
skipWhile(bool test(E value)) → Iterable<E>
  Returns an `Iterable` that skips leading elements while `test` is satisfied. [...]
  override
take(int n) → Iterable<E>
  Returns a lazy iterable of the `count` first elements of this iterable. [...]
  override
takeWhile(bool test(E value)) → Iterable<E>
  Returns a lazy iterable of the leading elements satisfying `test`. [...]
  override
toList({bool growable: true }) → List<E>
  Creates a List containing the elements of this Iterable. [...]
  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
where(bool f(E element)) → Iterable<E>
  Returns a new lazy Iterable with all elements that satisfy the predicate `test`. [...]
  override
whereType<T>() → Iterable<T>
  Returns a new lazy Iterable with all elements that have type `T`. [...]
  override
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a non-existent method or property is accessed. [...]
  inherited

## Operators

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