equality_defined_collections 1.0.0 icon indicating copy to clipboard operation
equality_defined_collections: ^1.0.0 copied to clipboard

Classes like List and Set with equality based on the elements.

Equality Defined Collections #

This package contains the collection classes Iterable, List, Set and Map which have a redefined equality such that two collections are considered equal based on their contents, and not whether they refer to the same instance of the collection.

Both the properties operator == and hashCode have been overriden in these classes.

The classes present in the library are EqualityDefinedIterable, EqualityDefinedList, EqualityDefinedSet and EqualityDefinedMap. All these classes will take in a collection and give them the same properties.

Getting Started #

To import this package, include the following code:

import 'package:equality_defined_collections/equality_defined_collections.dart';

Normal collections vs Equality Defined Collections #

Let's say we have the following three lists

final list1 = [1, 3, 5];
final list2 = [2, 0, 4];
final list3 = [1, 3, 5];

Even though the lists list1 and list3 have the same elements, list1 == list3 will return false because the two list are different instances. Using equality defined collections, we have

final eqList1 = EqualityDefinedList([1, 3, 5]);
final eqList2 = EqualityDefinedList([2, 0, 4]);
final eqList3 = EqualityDefinedList([1, 3, 5]);

Then, eqList1 == eqList3 will return true, while eqList1 == eqList2 will return false.

Although it is not that difficult to create a function/method that checks whether two lists have the same elements, using an equality defined list has an advantage when used in collections that recognise uniqueness- a Set, or the keys of a Map.

For example, let's say we have 2 maps map and eqMap, as defined below:

final map = {
    list1: 'odd',
    list2: 'even'
};

final eqMap = {
    eqList1: 'odd',
    eqList2: 'even'
};

Then, map[list3] will return null, but eqMap[list3] will return odd.

Types of equality #

By default, the equality used to compare the contents is DefaultEquality from the collection package, which checks whether two elements within the collection are equal by equating them, using operator == and changing the hashCode alongside.

Another possible equality is the IdentityEquality, which checks whether two elements are the same instance of an object, using the identical function.

1
likes
110
pub points
0%
popularity

Publisher

unverified uploader

Classes like List and Set with equality based on the elements.

Homepage

Documentation

API reference

License

Icon for licenses.unknown (LICENSE)

Dependencies

collection

More

Packages that depend on equality_defined_collections