group<K> method

Map<K, List<T>> group<K>(
  1. K keySelector(
    1. T item
    )
)

Groups the elements of the iterable by a key returned from the keySelector function.

Returns a Map where each key is a value returned by keySelector, and the corresponding value is a list of all elements in the iterable that produced that key.

Example:

final items = ['apple', 'banana', 'avocado'];
final grouped = items.group((item) => item[0]);
// grouped = {
//   'a': ['apple', 'avocado'],
//   'b': ['banana']
// }

Implementation

Map<K, List<T>> group<K>(K Function(T item) keySelector) {
  final Map<K, List<T>> result = {};
  for (final element in this) {
    final key = keySelector(element);
    result.putIfAbsent(key, () => []).add(element);
  }
  return result;
}