class KMinValues implements IBaseCardinality {

    public boolean offer(Object key) {
        int idx = index(key);
        
        if (kMin.size() < k) {
            if (!kMin.contains(idx)) {
                kMin.add(idx);
                return true;
            }
        } else {
            if (idx < kMin.last())
                if (!kMin.contains(idx)) {
                    kMin.pollLast();
                    kMin.add(idx);
                    return true;
                }
        }
        
        return false;
    }

    public  KMinValues(int k);
    public  KMinValues(int k, Hash hasher);

}