【发布时间】:2012-12-28 11:44:01
【问题描述】:
我有一个从 Web 服务填充的 List<SomeBean>。我想将该列表的内容复制/克隆到相同类型的空列表中。用于复制列表的 Google 搜索建议我使用 Collections.copy() 方法。在我看到的所有示例中,目标列表应该包含要进行复制的确切项目数。
由于我正在使用的列表是通过 Web 服务填充的,并且它包含数百个对象,因此我无法使用上述技术。还是我用错了??!!无论如何,为了让它工作,我尝试做这样的事情,但我仍然得到了一个IndexOutOfBoundsException。
List<SomeBean> wsList = app.allInOne(template);
List<SomeBean> wsListCopy=new ArrayList<SomeBean>(wsList.size());
Collections.copy(wsListCopy,wsList);
System.out.println(wsListCopy.size());
我尝试使用wsListCopy=wsList.subList(0, wsList.size()),但后来在代码中得到了ConcurrentAccessException。打击和审判。 :)
无论如何,我的问题很简单,如何将我的列表的全部内容复制到另一个列表中?当然不是通过迭代。
【问题讨论】:
-
任何副本当然都会使用迭代。你可以把它藏起来,但它仍然会在那里。
-
首先:您确定需要复制该列表吗?你这样做的动机是什么?
-
是的,迭代只是隐藏在这些层之下。但是添加了评论以防止任何迭代答案。 :)
-
@ppeterka 我正在对列表执行操作,例如 removeAll()。这会导致列表丢失其原始数据。之后也需要“那个数据”。
-
app.allInOne(template)返回的列表的实际类型是什么?ArrayList?
标签: java collections copy