package org.karmaexchange.util; import java.util.HashSet; @SuppressWarnings("serial") public class BoundedHashSet<E> extends HashSet<E> { private int limit; public static <E> BoundedHashSet<E> create(int limit) { return new BoundedHashSet<E>(limit); } private BoundedHashSet(int limit) { this.limit = limit; } @Override public boolean add(E e) { if (limitReached()) { throw new IllegalStateException("Bounded hash set is full: limit=" + limit); } return super.add(e); } public void addIfSpace(E e) { if (!limitReached()) { add(e); } } public boolean limitReached() { return size() >= limit; } }