package com.yoursway.utils;
import static com.google.common.collect.Lists.newArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Iterators;
public class YsCollections {
public static <T> boolean addIfNotNull(Collection<? super T> collection, T item) {
if (item != null)
return collection.add(item);
else
return false;
}
public static <T> Iterable<T> forEnumeration(Enumeration<T> enumeration) {
return YsCollections.forIterator(Iterators.forEnumeration(enumeration));
}
public static <T> Iterable<T> forIterator(final Iterator<T> iterator) {
return new Iterable<T>() {
private boolean used = false;
public Iterator<T> iterator() {
if (used)
throw new IllegalStateException("Cannot obtain this iterable's iterator twice");
used = true;
return iterator;
}
};
}
public static <T extends Comparable<? super T>> List<T> sort(Iterable<T> iterable) {
return YsCollections.sort(iterable.iterator());
}
public static <T extends Comparable<? super T>> List<T> sort(Iterator<T> iterator) {
List<T> list = newArrayList(iterator);
Collections.sort(list);
return list;
}
public static <K, V> Map<K, V> immutableMap(Map<? extends K, ? extends V> map) {
if (map.isEmpty())
return Collections.emptyMap();
else
return Collections.unmodifiableMap(new HashMap<K, V>(map));
}
}