package gov.nasa.jpl.mbee.mdk.util;
import java.util.Collection;
import java.util.HashSet;
/**
* A hash set of seen (already visited) elements for avoiding infinite
* recursion.
* <p>
* NOTE: Okay to use hash table since nothing changes based on the order. We
* never need to iterate over the contents.
*/
public class SeenHashSet<E> extends HashSet<E> implements SeenSet<E> {
/*
* (non-Javadoc)
*
* @see gov.nasa.jpl.ae.util.SeenSet#seen(java.lang.Object, boolean)
*/
@Override
public boolean see(E element, boolean recursive) {
if (contains(element)) {
// ++seenCt;
return true;
}
// ++notSeenCt;
if (recursive == true) {
add(element);
}
return false;
}
private static final long serialVersionUID = 3550974615402713022L;
public SeenHashSet() {
super();
}
/**
* @param c
*/
public SeenHashSet(Collection<? extends E> c) {
super(c);
}
/**
* @param initialCapacity
*/
public SeenHashSet(int initialCapacity) {
super(initialCapacity);
}
/**
* @param initialCapacity
* @param loadFactor
*/
public SeenHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
}
}