package main.options.domain;
import java.util.HashSet;
import java.util.Set;
/**
* An enumerated set of values.
*
* @author Maxime PIA
*
* @param <T>
* The type of the values.
*/
public class Values<T> implements Domain<T> {
private T[] values;
@SuppressWarnings("unchecked")
public Values(T[] values) {
Set<T> noDuplicates = new HashSet<>();
for (T value : values){
noDuplicates.add(value);
}
this.values = (T[]) noDuplicates.toArray();
}
/**
* Getter on the possible values.
*
* @return The possible values.
*/
public T[] getValues() {
return values;
}
@Override
public boolean inDomain(T value) {
for (T acceptedValue : values) {
if (value.equals(acceptedValue)) {
return true;
}
}
return false;
}
@Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("{");
int counter = 0;
for (T acceptedValue : values) {
res.append(acceptedValue);
if (counter < values.length - 1) {
res.append(", ");
}
++counter;
}
res.append("}");
return res.toString();
}
}