package jas.spawner.modern.math;
import java.util.Collection;
import java.util.Set;
public class SetAlgebra<T> {
public enum OPERATION {
UNION, INTERSECT, COMPLEMENT;
}
public static <T> Set<T> operate(Set<T> leftSet, Collection<T> rightSet, OPERATION operation) {
switch (operation) {
case UNION:
leftSet.addAll(rightSet);
break;
case COMPLEMENT:
leftSet.removeAll(rightSet);
break;
case INTERSECT:
leftSet.retainAll(rightSet);
break;
}
return leftSet;
}
public static <T> Set<T> operate(Collection<T> leftSet, Collection<T> rightSet, Set<T> result, OPERATION operation) {
switch (operation) {
case UNION:
result.addAll(leftSet);
result.addAll(rightSet);
break;
case COMPLEMENT:
result.addAll(leftSet);
result.removeAll(rightSet);
break;
case INTERSECT:
result.addAll(leftSet);
result.retainAll(rightSet);
break;
}
return result;
}
}