package models.helpers; import java.util.Collection; import java.util.Set; import java.util.TreeSet; /** * {@link http://www.java2s.com/Code/Java/Collections-Data-Structure/ * Setoperationsunionintersectiondifferencesymmetricdifferenceissubsetissuperset * .htm} * */ public class SetOperations { public static <T> Set<T> union(Set<T> setA, Set<T> setB) { Set<T> tmp = new TreeSet<T>(setA); tmp.addAll(setB); return tmp; } public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) { Set<T> tmp = new TreeSet<T>(); for (T x : setA) if (setB.contains(x)) { tmp.add(x); } return tmp; } public static <T> Set<T> difference(Set<T> setA, Set<T> setB) { Set<T> tmp = new TreeSet<T>(setA); tmp.removeAll(setB); return tmp; } public static <T> Set<T> symDifference(Set<T> setA, Set<T> setB) { Set<T> tmpA; Set<T> tmpB; tmpA = union(setA, setB); tmpB = intersection(setA, setB); return difference(tmpA, tmpB); } public static <T> boolean isSubset(Set<T> setA, Set<T> setB) { return setB.containsAll(setA); } public static <T> boolean isSuperset(Set<T> setA, Set<T> setB) { return setA.containsAll(setB); } public static <T> boolean arrayEquals(T[] a, T[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { if (!a[i].equals(b[i])) return false; } return true; } public static <T> boolean containsAny(Collection<T> c1, Collection<T> c2) { for (T t : c1) { if (c2.contains(t)) return true; } return false; } }