EqualityComparer<T> class
Used in various iteration methods for allowing user-defined comparisons between complex elements.
EqualityComparer exposes three different forms of comparison - equivalency, ordering, and hashing. Any of the options can be omitted when creating an EqualityComparer instance, in which case the omitted options will revert to default behavior as outlined below.
The EqualityComparer.compare field tests equivalency. Two elements of a
given type are passed to the function, and the function returns whether or
not the elements are deemed equal. If omitted, the function will default to
checking for strict equivalency by using the == operator. (With the exception of
Iterable, which will default to using BooleanConsumerExceptions.sequenceEqual.)
(left, right) => left == right;
// For iterables
(left, right) => left.sequenceEqual(right);
The EqualityComparer.hash field generates hash codes. An element is passed
to the function and the function returns an integer value that represents
the element's hash code. If omitted, the function will default to calling the
object's hashCode property:
(value) => value.hashCode;
The EqualityComparer.sort field tests for sorting order. Two elements of a
given type are passed to the function, and the function returns an integer
that represents the sorting order of the elements. If the left value is lesser
than the right value, the returned integer is negative. If the left value is
greater than the right value, the returned integer is positive. If the two
values are equal, 0 is returned. (This behavior is identical to various
compareTo methods on Dart types.)
If the EqualityComparer.sort field is omitted, the function's default behavior depends on the type argument passed to EqualityComparer:
intwill default to using int.compareTonumwill default to using num.compareTodoublewill default to using double.compareToStringwill default to using String.compareToDurationwill default to using Duration.compareToBigIntwill default to using BigInt.compareToDateTimewill default to using DateTime.compareTo- All other types will default to a non-sorting function:
(left, right) => return 0;
Constructors
-
EqualityComparer({Comparer<
T> ? comparer, Hasher<T> ? hasher, Sorter<T> ? sorter})
Properties
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
forType<
T> () → EqualityComparer< T> -
Returns the default EqualityComparer that has been registered for type
T. -
of<
T extends Comparable< (T> >{bool useEquals = false}) → EqualityComparer< T> -
Returns an EqualityComparer where the
sorterand optionallycomparermethods are set to call the Comparable.compareTo method of the provided type. Thehashermethod is set to the default hasher behavior of calling Object.hashCode. -
registerEqualityComparer<
T> (EqualityComparer< T> comparer, {bool overwrite = false}) → bool -
Registers an EqualityComparer object as the default comparer for type
T, returning aboolstating if a comparer already exists. -
tryForType<
T> () → EqualityComparer< T> ? -
Returns the default EqualityComparer that has been registered for type
T. -
unregisterEqualityComparer<
T> () → EqualityComparer< T> -
Unregisters an EqualityComparer object as the default comparer for type
T, returning the comparer object that was removed.