groupBy<K> method

  1. @useResult
Map<K, List<T>> groupBy<K>(
  1. K keyOf(
    1. T
    )
)

Groups elements by the key produced by keyOf.

Returns a map from key to list of elements in encounter order. keyOf must not return null.

Example:

['a', 'ab', 'b'].groupBy((s) => s.length); // {1: ['a', 'b'], 2: ['ab']}

Implementation

@useResult
Map<K, List<T>> groupBy<K>(K Function(T) keyOf) {
  final Map<K, List<T>> result = <K, List<T>>{};
  for (final T element in this) {
    final K key = keyOf(element);
    result.putIfAbsent(key, () => <T>[]).add(element);
  }
  return result;
}