import { Collector, BaseCollector, Supplier } from "../collector"; export class ToSetCollector> extends BaseCollector { protected supplier : Supplier; constructor ( supplier : Supplier ) { super(); this.supplier = supplier; } supply () : A { return this.supplier(); } accumulate ( container : A, item : T ) : void { container.add( item ); } combine ( container1 : A, container2 : A ) : A { for ( let value of container2 ) { this.accumulate( container1, value ); } return container1; } finish ( container : A ) : A { return container; } } export function toSet () : Collector, Set>; export function toSet> ( factory : Supplier ) : Collector; export function toSet> ( factory ?: Supplier ) : Collector { return new ToSetCollector( factory || ( () => new Set() as A ) ); }