@Override public <T> MutableSet<T> withAll(Iterable<? extends T> items) { UnifiedSet<T> set = UnifiedSet.newSet(items); T[] itemArray; switch (set.size()) { case 0: return new EmptySet<>(); case 1: itemArray = (T[]) set.toArray(); return new SingletonSet<>(itemArray[0]); case 2: itemArray = (T[]) set.toArray(); return new DoubletonSet<>(itemArray[0], itemArray[1]); case 3: itemArray = (T[]) set.toArray(); return new TripletonSet<>(itemArray[0], itemArray[1], itemArray[2]); case 4: itemArray = (T[]) set.toArray(); return new QuadrupletonSet<>(itemArray[0], itemArray[1], itemArray[2], itemArray[3]); default: return set; } }
@Override public <T> MutableSet<T> withAll(Iterable<? extends T> items) { UnifiedSet<T> set = UnifiedSet.newSet(items); T[] itemArray; switch (set.size()) { case 0: return new EmptySet<>(); case 1: itemArray = (T[]) set.toArray(); return new SingletonSet<>(itemArray[0]); case 2: itemArray = (T[]) set.toArray(); return new DoubletonSet<>(itemArray[0], itemArray[1]); case 3: itemArray = (T[]) set.toArray(); return new TripletonSet<>(itemArray[0], itemArray[1], itemArray[2]); case 4: itemArray = (T[]) set.toArray(); return new QuadrupletonSet<>(itemArray[0], itemArray[1], itemArray[2], itemArray[3]); default: return set; } }
@Override public <T> MutableSet<T> withAll(Iterable<? extends T> items) { UnifiedSet<T> set = UnifiedSet.newSet(items); T[] itemArray; switch (set.size()) { case 0: return new EmptySet<>(); case 1: itemArray = (T[]) set.toArray(); return new SingletonSet<>(itemArray[0]); case 2: itemArray = (T[]) set.toArray(); return new DoubletonSet<>(itemArray[0], itemArray[1]); case 3: itemArray = (T[]) set.toArray(); return new TripletonSet<>(itemArray[0], itemArray[1], itemArray[2]); case 4: itemArray = (T[]) set.toArray(); return new QuadrupletonSet<>(itemArray[0], itemArray[1], itemArray[2], itemArray[3]); default: return set; } } }