我想问一下:在Java中如何将Collection
转换为List
?
我想问一下:在Java中如何将Collection
转换为List
?
l.addAll(myCollection)
许多列表子类型也可以在它们的构造函数中接受源集合。List list;
if (collection instanceof List)
{
list = (List)collection;
}
else
{
list = new ArrayList(collection);
}
if(collection==null){
return Collections.emptyList();
}
List list;
if (collection instanceof List){
list = (List)collection;
}else{
list = new ArrayList(collection);
}
addAll
方法。你可以使用其中任何一种解决方案.. 但是请考虑是否有必要克隆你的集合,因为这两个集合将包含相同的对象引用
Collection
和List
是接口。你可以选择任何实现了List
接口的类:ArrayList LinkedList
,然后将其强制转换回Collection
,因为它在顶层。
下面的示例展示了从ArrayList
进行强制转换:
public static void main (String args[]) {
Collection c = getCollection();
List myList = (ArrayList) c;
}
public static Collection getCollection()
{
Collection c = new ArrayList();
c.add("Apple");
c.add("Oranges");
return c;
}
Collection
的实现类实现了List
接口时,比如ArrayList
,LinkedList
等,这个方法就能用。但是一旦你尝试像这样做:Map<Foo,Bar> myMap = new HashMap<Foo,Bar>(); List<Bar> fromMap = (List<Bar>) myMap.values();
在编译时看起来一切都很好,但是运行时会得到java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List
的错误。 - Matt Ball