package aima.core.probability.domain; import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set; public class FiniteIntegerDomain extends AbstractFiniteDomain { private Set<Integer> possibleValues = null; public FiniteIntegerDomain(Integer... pValues) { // Keep consistent order possibleValues = new LinkedHashSet<Integer>(); for (Integer v : pValues) { possibleValues.add(v); } // Ensure cannot be modified possibleValues = Collections.unmodifiableSet(possibleValues); indexPossibleValues(possibleValues); } // // START-Domain @Override public int size() { return possibleValues.size(); } @Override public boolean isOrdered() { return true; } // END-Domain // // // START-DiscreteDomain @Override public Set<Integer> getPossibleValues() { return possibleValues; } // END-DiscreteDomain // @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof FiniteIntegerDomain)) { return false; } FiniteIntegerDomain other = (FiniteIntegerDomain) o; return this.possibleValues.equals(other.possibleValues); } @Override public int hashCode() { return possibleValues.hashCode(); } }