import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class UnionOfList {
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection collectionOfCollection = java.util.Arrays.asList("asdf",
"java");
System.out.println(unionOfListOfLists(collectionOfCollection));
}
/**
* @param collectionOfCollection
* a Collection<Collection<T>>
*
* @return a Set<T> containing all values of all Collections<T>
* without any duplicates
*/
public static <T> Set<T> unionOfListOfLists(
final Collection<? extends Collection<T>> collectionOfCollection) {
if (collectionOfCollection == null
|| collectionOfCollection.isEmpty()) {
return new HashSet<T>(0);
}
final HashSet<T> union = new HashSet<T>();
for (final Collection<T> col : collectionOfCollection) { //有一点问题
if (col != null) {
for (final T t : col) {
if (t != null) {
union.add(t);
}
}
}
}
return union;
}
public static <T> List<T> asList(final Iterable<? extends T> iterable) {
return (iterable instanceof Collection) ? new LinkedList<T>(
(Collection<? extends T>) iterable) : new LinkedList<T>() {
private static final long serialVersionUID = 3109256773218160485L;
{
if (iterable != null) {
for (final T t : iterable) {
add(t);
}
}
}
};
}
public static <T> List<T> asList(final T t, final T... ts) {
final ArrayList<T> list = new ArrayList<T>(ts.length + 1);
list.add(t);
Collections.addAll(list, ts);
return list;
}
/**
* Check if collection is not <tt>null</tt> and empty
*
* @param collection
* Collection to check
*
* @return <tt>true</tt>, if collection is not null and empty, else <tt>false</tt>
*/
public static <T> boolean isEmpty(final Collection<T> collection) {
return collection != null && collection.isEmpty();
}
/**
* Check if map is not <tt>null</tt> and empty
*
* @param map
* map to check
*
* @return <tt>true</tt>, if map is not null and empty, else <tt>false</tt>
*/
public static <K, V> boolean isEmpty(final Map<K, V> map) {
return map != null && map.isEmpty();
}
}