Java 将集合转换为列表

Java 将集合转换为列表,java,collections,Java,Collections,我想问:如何在Java中将集合转换为列表?集合myCollection=。。。; Collection<MyObjectType> myCollection = ...; List<MyObjectType> list = new ArrayList<MyObjectType>(myCollection); 列表列表=新的ArrayList(myCollection); 请参阅。创建一个新列表,并使用集合调用addAll。如果您已经创建了列表子类型的实例(

我想问:如何在Java中将
集合
转换为
列表

集合myCollection=。。。;
Collection<MyObjectType> myCollection = ...;
List<MyObjectType> list = new ArrayList<MyObjectType>(myCollection);
列表列表=新的ArrayList(myCollection);

请参阅。

创建一个新列表,并使用集合调用
addAll

如果您已经创建了列表子类型的实例(例如ArrayList、LinkedList),则可以使用addAll方法

e、 g


许多列表子类型也可以在其构造函数中获取源集合

您可以使用这两种解决方案中的任何一种。。但是考虑是否有必要克隆集合,因为两个集合都包含相同的对象引用

Collection
列表
是接口。您可以使用
列表
接口的任何实现:
ArrayList LinkedList
,只需将其转换回
集合
,因为它位于顶部

下面的示例显示了从
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;
}

感谢Sandeep的加入-刚刚添加了一个空检查,以避免else语句中出现NullPointerException

if(collection==null){
  return Collections.emptyList();
}
List list;
if (collection instanceof List){
  list = (List)collection;
}else{
  list = new ArrayList(collection);
}

你想说什么?或者你真的想知道吗?:)您似乎不知道如何在Java中使用常规集合。阅读教程怎么样?所以,我们在等待你的报道。我怀疑你被否决了,因为这并不总是有效的。当然,当
集合
的实现类实现
列表
(例如
数组列表
链接列表
…)时,您就没事了。但是只要您尝试执行类似于
Map myMap=newhashmap()的操作;List fromMap=(List)myMap.values()编译时一切看起来都很好-但是当您运行它时,您会得到
java.lang.ClassCastException:java.util.HashMap$值不能转换为java.util.List
。这在概念上是完全错误的。不能通过强制转换将任意集合“强制”为列表。
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);
}