/*
* Strongback
* Copyright 2015, Strongback and individual contributors by the @authors tag.
* See the COPYRIGHT.txt in the distribution for a full listing of individual
* contributors.
*
* Licensed under the MIT License; you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.strongback.util;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* Utility methods for constructing various kinds of collections.
*
* @author Randall Hauch
*/
public final class Collections {
private Collections() {
}
/**
* Create an immutable set from the supplied items.
*
* @param elements the elements to put into the new immutable set
* @return the new immutable set; never null but possibly empty if {@code elements} is null or empty
* @param <T> the type of elements in the set
*/
public static <T> Set<T> immutableSet(Collection<T> elements) {
if (elements == null || elements.isEmpty()) return emptySet();
return java.util.Collections.unmodifiableSet(new LinkedHashSet<>(elements));
}
/**
* Create an immutable set from the supplied items.
*
* @param elements the elements to put into the new immutable set
* @return the new immutable set; never null but possibly empty if {@code elements} is null or empty
* @param <T> the type of elements in the set
*/
public static <T> Set<T> immutableSet(@SuppressWarnings("unchecked") T... elements) {
if (elements == null || elements.length == 0) return emptySet();
Set<T> result = new LinkedHashSet<>(elements.length);
for (T element : elements) {
if (element != null) result.add(element);
}
return java.util.Collections.unmodifiableSet(result);
}
/**
* Create an empty immutable set.
*
* @return the new immutable set; never null
* @param <T> the type of elements in the set
*/
public static <T> Set<T> emptySet() {
return java.util.Collections.emptySet();
}
}