首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将java.util.List复制到另一个java.util.List中

如何将java.util.List复制到另一个java.util.List中
EN

Stack Overflow用户
提问于 2013-01-14 21:52:50
回答 14查看 281.5K关注 0票数 156

我有一个从网络服务填充的List<SomeBean>。我想将该列表的内容复制/克隆到一个相同类型的空列表中。在谷歌搜索复制列表时,建议我使用Collections.copy()方法。在我看到的所有示例中,目的地列表都应该包含进行复制所需的确切项目数。

由于我使用的列表是通过web服务填充的,并且它包含数百个对象,因此我不能使用上面的技术。还是我用错了??!!不管怎样,为了让它工作,我试着这样做,但我仍然得到了一个IndexOutOfBoundsException

代码语言:javascript
复制
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。先打后审。:)

无论如何,我的问题很简单,我如何才能将列表的全部内容复制到另一个列表中?当然,不是通过迭代实现的。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2013-01-14 21:53:45

只需使用以下命令:

代码语言:javascript
复制
List<SomeBean> newList = new ArrayList<SomeBean>(otherList);

注意:仍然不是线程安全的,如果您从另一个线程修改otherList,那么您可能希望使该otherList (甚至是newList)成为锁,或者使用锁原语(如ReentrantReadWriteLock )来序列化对并发访问的任何列表的读/写访问。

票数 264
EN

Stack Overflow用户

发布于 2015-12-10 20:36:51

这是一种非常好的Java 8方式:

代码语言:javascript
复制
List<String> list2 = list1.stream().collect(Collectors.toList());

当然,这样做的好处是,您可以过滤并跳过列表的一部分。

例如:

代码语言:javascript
复制
//don't copy the first element 
List<String> list2 = list1.stream().skip(1).collect(Collectors.toList());
票数 36
EN

Stack Overflow用户

发布于 2016-04-04 18:26:32

代码语言:javascript
复制
originalArrayList.addAll(copyArrayofList);

请记住,每当使用addAll()方法进行复制时,引用相同对象的两个数组列表(originalArrayList和copyArrayofList)的内容将被添加到列表中,因此如果您修改其中任何一个,则copyArrayofList也将反映相同的更改。

如果不想产生副作用,则需要将每个of元素从originalArrayList复制到copyArrayofList中,就像使用for或while循环一样。对于深度复制,你可以使用下面的代码片段。

但是您还需要做一件事,实现Cloneable接口并覆盖SomeBean类的clone()方法。

代码语言:javascript
复制
public static List<SomeBean> cloneList(List<SomeBean> originalArrayList) {
    List<SomeBean> copyArrayofList = new ArrayList<SomeBean>(list.size());
    for (SomeBean item : list) copyArrayofList.add(item.clone());
    return clone;
}
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14319732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档