data-collectors
Version:
A collection of composable reduction operations for arbitrary streams of values
19 lines (18 loc) • 1.08 kB
TypeScript
import { Collector, BaseCollector } from "../collector";
import { Mapper } from "../collections/groupingBy";
export interface DistinctContainer<T, U> {
keys: Map<U, number>;
items: [U, T][];
}
export declare class DistinctCollector<T, U, A, R> extends BaseCollector<T, DistinctContainer<T, U>, R> {
protected keyer: Mapper<T, U>;
protected collector: Collector<T, A, R>;
constructor(keyer: Mapper<T, U>, collector: Collector<T, A, R>);
supply(): DistinctContainer<T, U>;
accumulate(container: DistinctContainer<T, U>, item: T): void;
combine(container1: DistinctContainer<T, U>, container2: DistinctContainer<T, U>): DistinctContainer<T, U>;
finish(container: DistinctContainer<T, U>): R;
}
export declare function distinct<T>(): Collector<T, DistinctContainer<T, T>, T[]>;
export declare function distinct<T, U>(keyer: Mapper<T, U>): Collector<T, DistinctContainer<T, U>, T[]>;
export declare function distinct<T, U, A, R>(keyer: Mapper<T, U>, collector?: Collector<U, any, R>): Collector<T, DistinctContainer<T, U>, R>;