groupBy<K> method

Map<K, List<T>> groupBy<K>(
  1. K keyFunction(
    1. T
    ), {
  2. IterableGroupingCriteria<K>? sortingCriteria,
})

Group elements in this iterable. Specifying a sorting criteria, this function returns a sorted map by key.

Implementation

Map<K, List<T>> groupBy<K>(
  K Function(T) keyFunction, {
  IterableGroupingCriteria<K>? sortingCriteria,
}) =>
    fold(
      sortingCriteria != null
          ? SplayTreeMap(sortingCriteria)
          : <K, List<T>>{},
      (Map<K, List<T>> map, T element) => map
        ..putIfAbsent(
          keyFunction(element),
          () => <T>[],
        ).add(element),
    );