当前位置: 首页 > 知识库问答 >
问题:

如何复制java.util。列表到另一个java.util.List

颛孙成益
2023-03-14

我有一个列表

因为我使用的列表是通过web服务填充的,并且它包含数百个对象,所以我不能使用上面的技术。还是我用错了??!!无论如何,为了让它工作,我尝试这样做,但我仍然得到了< code > 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()),但我在代码的后面得到了一个并发访问异常。点击并试用。:)

不管怎样,我的问题很简单,我如何将我的列表的全部内容复制到另一个列表中?当然,不是通过迭代。

共有3个答案

吉嘉珍
2023-03-14
originalArrayList.addAll(copyArrayofList);

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

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

但还有一件事需要做,即实现<code>可克隆</code>接口,并重写SomeBean类的<code>clone()</code〕方法

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 copyArrayofList;
}
薛宇
2023-03-14

这是一个非常好的Java 8方法:

List<String> list2 = list1.stream().collect(Collectors.toList());

当然这里的好处是你可以过滤和跳转到只复制部分列表。

e. g. g.

//don't copy the first element 
List<String> list2 = list1.stream().skip(1).collect(Collectors.toList());
司徒英卓
2023-03-14

只需使用这个:

List<SomeBean> newList = new ArrayList<SomeBean>(otherList);

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

 类似资料:
  • 问题内容: 我正在研究数据结构和链表,但是我没有得到如何制作链表副本的概念。有人可以使用伪代码或C代码进行解释吗? 问题答案: 复制链表的逻辑是递归的,并且基于以下观察结果: 空列表的克隆是空列表。 具有第一个节点x和其余节点xs的列表的克隆是x的副本,该副本位于xs的克隆之前。 如果您使用C ++对链表进行编码,则可以很干净:

  • 我想将table 1的内容复制到table 2中,但它不是直接复制,因为table 2包含的列比表1多。结构类似于这样: 表 1 { 列 2 列 4 列 6 } 表2{column1 column2 column3 column4 column5 column6} 我想做的是将table1到table2中的每一行相加,并为缺少的列设置默认值。任何帮助都将不胜感激。

  • 我有一个列表,其中包含以下元素: 和另一个对象,比如: 我有Element1的列表,并希望从Element1创建Elements2: 我正在寻找以更简单的方式执行此操作,也许使用 stream()。实现这一目标的最干净方法是什么?

  • 您好,我正在尝试将一个表从一个docx文件复制到另一个docx文件,但实际情况是,该表的值在新文档中的表下方和表外部被复制(请参见下面的图片) Talbe在新的docx里 正如您所见,表的值被复制到表的外部。我使用的是Libre Office,ApachePOI版本3.17,我的电脑运行的是Ubuntu 16.04 我用来执行复制的代码如下

  • 问题内容: 我需要遍历for循环的每次迭代的值集,但仅对于第一次迭代,它可以正常工作。此后返回。 我很清楚这种行为。 一种解决方案是在for循环中调用方法,因此对于每个for循环迭代,都会对其进行初始化。但这是非常无效的方法,因为它是独立的。 我尝试了此方法,但由于它仅包含参考,因此也无法正常工作。 有什么方法可以将迭代器复制到另一个或其他更好的方法中? 问题答案: An 是可能的最小API,可以

  • 问题内容: 我想在MySQL中将数据从一个表复制到另一个表。 表1(现有表): 表2(新表) 我想将一些数据字段从表1复制到表2。 可以使用MySQL查询完成吗? 问题答案: 这将做您想要的: 如果要包括table1中的所有行。否则,如果只想添加table1的子集,则可以在末尾添加WHERE语句。 我希望这有帮助。