toMap<T, K, U> static method

Collector<T, Map<K, U>, Map<K, U>> toMap<T, K, U>(
  1. JFunction<T, K> keyMapper,
  2. JFunction<T, U> valueMapper, [
  3. JBinaryOperator<U>? mergeFunction,
  4. JSupplier<Map<K, U>>? mapSupplier,
])

Implementation

static Collector<T, Map<K, U>, Map<K, U>> toMap<T, K, U>(JFunction<T, K> keyMapper,
    JFunction<T, U> valueMapper, [JBinaryOperator<U>? mergeFunction, JSupplier<Map<K, U>>? mapSupplier]) {
  if (mapSupplier == null) mapSupplier = () => HashMap<K, U>();
  if (mergeFunction == null) mergeFunction = (v1, v2) => throw Exception("Duplicated key");
  JBiFunction<Map<K, U>, T,Map<K, U>> accumulator = (map, element) {
    var key = keyMapper(element);
    var value = valueMapper(element);
    if (!map.containsKey(key))
      map.put(key, value);
    else
      map.put(key, mergeFunction!(map.get(key)!, value));
    return map;
  };
  return _Collector(mapSupplier, accumulator, (t) => t);
}