package net.varkhan.data.learn.stats; import net.varkhan.base.containers.set.ArrayOpenHashCountingSet; import net.varkhan.base.containers.set.CountingSet; import java.util.ArrayList; import java.util.Collection; /** * <b></b>. * <p/> * * @author varkhan * @date 1/25/14 * @time 6:52 PM */ public abstract class AbstractPurity<A,C> implements Purity<A,C> { @Override public double invoke(Collection<? extends Collection<A>> arg, C ctx) { CountingSet<A> all = new ArrayOpenHashCountingSet<A>(); Collection<CountingSet<A>> parts = new ArrayList<CountingSet<A>>(); for(Collection<A> bag: arg) { CountingSet<A> set = new ArrayOpenHashCountingSet<A>(); for(A val: bag) { set.add(val); all.add(val); } parts.add(set); } return invoke(parts, all, ctx); } public abstract double invoke(Collection<CountingSet<A>> parts, CountingSet<A> all, C ctx); @Override public String toString() { return this.getClass().getSimpleName()+"(<$>)"; } }