toMap<T, K, U> static method
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< ? mapSupplier,K, U> >
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);
}