package marmot.util;
import gnu.trove.set.TIntSet;
import gnu.trove.set.hash.TIntHashSet;
public class HashFeatureTable implements FeatureTable {
private static final long serialVersionUID = 1L;
private TIntSet set_;
public HashFeatureTable() {
set_ = new TIntHashSet();
}
@Override
public int size() {
return set_.size();
}
@Override
public int getFeatureIndex(Encoder encoder, boolean insert) {
int hash_code = encoder.hashCode();
if (hash_code < 0) {
hash_code = -hash_code;
}
if (set_.contains(hash_code)) {
return hash_code;
}
if (insert) {
set_.add(hash_code);
return hash_code;
}
return -1;
}
// private void writeObject(ObjectOutputStream oos) throws IOException {
// oos.defaultWriteObject();
// oos.writeInt(set_.size());
// for (Integer i : set_) {
// oos.writeInt(i);
// }
// }
//
// private void readObject(ObjectInputStream ois)
// throws ClassNotFoundException, IOException {
// ois.defaultReadObject();
// int size = ois.readInt();
// set_ = new HashSet<>(size);
// for (int number = 0; number < size; number++) {
// Integer i = ois.readInt();
// set_.add(i);
// }
// }
}