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