data-collectors
Version:
A collection of composable reduction operations for arbitrary streams of values
18 lines (17 loc) • 1.09 kB
TypeScript
import { Collector, BaseCollector, Supplier } from "../collector";
export interface Mapper<T, U> {
(value: T): U;
}
export declare class GroupingByCollector<T, K, A, D, M extends Map<K, D>> extends BaseCollector<T, Map<K, A>, Map<K, D>> {
protected mapper: Mapper<T, K>;
protected supplier: Supplier<M>;
protected collector: Collector<T, A, D>;
constructor(mapper: Mapper<T, K>, supplier: Supplier<M>, collector: Collector<T, A, D>);
supply(): Map<K, A>;
accumulate(container: Map<K, A>, item: T): void;
combine(container1: Map<K, A>, container2: Map<K, A>): Map<K, A>;
finish(container: Map<K, A>): Map<K, D>;
}
export declare function groupingBy<T, K>(mapper: (item: T) => K): Collector<T, Map<K, T[]>, Map<K, T[]>>;
export declare function groupingBy<T, K, A, D>(mapper: (item: T) => K, collector: Collector<T, A, D>): Collector<T, Map<K, A>, Map<K, D>>;
export declare function groupingBy<T, K, A, D, M extends Map<K, D>>(mapper: (item: T) => K, supplier: Supplier<M>, collector: Collector<T, A, D>): Collector<T, Map<K, A>, Map<K, D>>;