我有一个从 Web 服务填充的 List<SomeBean>
。我想将该列表的内容复制/克隆到相同类型的空列表中。谷歌搜索复制列表建议我使用 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
。打击和审判。 :)
无论如何,我的问题很简单, 如何将列表的全部内容复制到另一个列表中? 当然,不是通过迭代。
原文由 Mono Jamoon 发布,翻译遵循 CC BY-SA 4.0 许可协议
只需使用这个:
注意:仍然不是线程安全的,如果你从另一个线程修改
otherList
,那么你可能想要制作那个otherList
(甚至newList
)CopyOnWriteArrayList
例如,---
或使用锁定原语,例如 ReentrantReadWriteLock 来序列化对同时访问的任何列表的读/写访问。