collection 1.14.10

Contains utility functions and classes in the style of dart:collection to make
working with collections easier.

Algorithms

The package contains functions that operate on lists.

It contains ways to shuffle a List, do binary search on a sorted List, and
various sorting algorithms.

Equality

The package provides a way to specify the equality of elements and collections.

Collections in Dart have no inherent equality. Two sets are not equal, even
if they contain exactly the same objects as elements.

The Equality interface provides a way to say define such an equality. In this
case, for example, const SetEquality(const IdentityEquality()) is an equality
that considers two sets equal exactly if they contain identical elements.

Equalities are provided for Iterables, Lists, Sets, and Maps, as well as
combinations of these, such as:

const MapEquality(const IdentityEquality(), const ListEquality());

This equality considers maps equal if they have identical keys, and the
corresponding values are lists with equal (operator==) values.

Iterable Zip

Utilities for "zipping" a list of iterables into an iterable of lists.

Priority Queue

An interface and implementation of a priority queue.

Wrappers

The package contains classes that "wrap" a collection.

A wrapper class contains an object of the same type, and it forwards all
methods to the wrapped object.

Wrapper classes can be used in various ways, for example to restrict the type
of an object to that of a supertype, or to change the behavior of selected
functions on an existing object.

Features and bugs

1.14.10

Fix the parameter names in overridden methods to match the source.

Make tests Dart 2 type-safe.

Stop depending on SDK retype and deprecate methods.

1.14.9

Fixed bugs where QueueList, MapKeySet, and MapValueSet did not adhere to
the contract laid out by List.cast, Set.cast and Map.cast respectively.
The returned instances of these methods now correctly forward to the existing
instance instead of always creating a new copy.

1.14.8

Deprecated Delegating{Name}.typed static methods in favor of the new Dart 2
cast methods. For example, DelegatingList.typed<String>(list) can now be
written as list.cast<String>().

1.14.7

Only the Dart 2 dev SDK (>=2.0.0-dev.22.0) is now supported.

Added support for all Dart 2 SDK methods that threw UnimplementedError.

1.14.6

Make DefaultEquality's equals() and hash() methods take any Object
rather than objects of type E. This makes const DefaultEquality<Null>()
usable as Equality<E> for any E, which means it can be used in a const
context which expects Equality<E>.

This makes the default arguments of various other const equality constructors
work in strong mode.

1.14.5

Fix issue with EmptyUnmodifiableSet's stubs that were introduced in 1.14.4.

1.14.2

1.14.1

1.14.0

Add CombinedIterableView, a view of several iterables concatenated together.

Add CombinedMapView, a view of several maps concatenated together.

1.13.0

Add EqualityBy

1.12.0

Add CaseInsensitiveEquality.

Fix bug in equalsIgnoreAsciiCase.

1.11.0

Add EqualityMap and EqualitySet classes which use Equality objects for
key and element equality, respectively.

1.10.1

Set.difference now takes a Set<Object> as argument.

1.9.1

Fix some documentation bugs.

1.9.0

Add a top-level stronglyConnectedComponents() function that returns the
strongly connected components in a directed graph.

1.8.0

Add a top-level mapMap() function that works like Iterable.map() on a
Map.

Add a top-level mergeMaps() function that creates a new map with the
combined contents of two existing maps.

Add a top-level groupBy() function that converts an Iterable to a Map by
grouping its elements using a function.

Add top-level minBy() and maxBy() functions that return the minimum and
maximum values in an Iterable, respectively, ordered by a derived value.

Add a top-level transitiveClosure() function that returns the transitive
closure of a directed graph.

1.7.0

Add a const UnmodifiableSetView.empty() constructor.

1.6.0

Add a UnionSet class that provides a view of the union of a set of sets.

Add a UnionSetController class that provides a convenient way to manage the
contents of a UnionSet.

Fix another incorrectly-declared generic type.

1.5.1

Fix an incorrectly-declared generic type.

1.5.0

Add DelegatingIterable.typed(), DelegatingList.typed(),
DelegatingSet.typed(), DelegatingMap.typed(), and
DelegatingQueue.typed() static methods. These wrap untyped instances of
these classes with the correct type parameter, and assert the types of values
as they're accessed.

Fix the types for binarySearch() and lowerBound() so they no longer
require all arguments to be comparable.

Add generic annotations to insertionSort() and mergeSort().

1.4.1

Fix all strong mode warnings.

1.4.0

Add a new PriorityQueue() constructor that forwards to new
HeapPriorityQueue().

Deprecate top-level libraries other than package:collection/collection.dart,
which exports these libraries' interfaces.