package sk.stuba.fiit.perconik.utilities;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import static java.util.Arrays.asList;
import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Lists.newArrayListWithCapacity;
import static com.google.common.collect.Lists.newArrayListWithExpectedSize;
import static com.google.common.collect.Lists.newLinkedList;
/**
* Static utility methods pertaining to {@code List} instances.
*
* @author Pavol Zbell
* @since 1.0
*/
public final class MoreLists {
private MoreLists() {}
public static <E> ArrayList<E> newArrayListSuitableFor(final Iterable<?> iterable) {
if (iterable instanceof Collection) {
return newArrayListWithCapacity(((Collection<?>) iterable).size());
}
return newArrayList();
}
public static <E> ArrayList<E> newArrayListExpectedFor(final Iterable<?> iterable) {
if (iterable instanceof Collection) {
return newArrayListWithExpectedSize(((Collection<?>) iterable).size());
}
return newArrayList();
}
public static List<?> wrap(final Object object) {
if (object instanceof List) {
return (List<?>) object;
}
return asList(MoreArrays.wrap(object));
}
public static <E> List<E> toList(final Iterable<E> elements) {
return elements instanceof List ? (List<E>) elements : newArrayList(elements);
}
public static <E> ArrayList<E> toArrayList(final Iterable<E> elements) {
return elements instanceof ArrayList ? (ArrayList<E>) elements : newArrayList(elements);
}
public static <E> LinkedList<E> toLinkedList(final Iterable<E> elements) {
return elements instanceof LinkedList ? (LinkedList<E>) elements : newLinkedList(elements);
}
}