如何用另一个arraylist的内容替换arraylist的内容?

时间:2015-10-23 21:57:33

标签: java oop arraylist

我想用一个完整的内容替换一个arraylist的内容。 例如,

ArrayList<String> old = new ArrayList<String>();
ArrayList<String> newlist = new ArrayList<String>();
old.add("Hi");
old.add("World");
newlist.add("League")
newlist.add("OfLegends"):
old = newlist;

当我尝试这样做时,它会做出这种奇怪的行为,其中arraylist的大小加倍了更多的元素。我不想要一个两倍于原始arraylist大小的arraylist,我只想用新的arraylist覆盖旧的arraylist,其中新旧arraylist的内容是相同的。有没有办法在没有某种循环的情况下做到这一点,或者这是我唯一的选择?谢谢你并且请求

3 个答案:

答案 0 :(得分:3)

old.clear(); 
old.addAll(newList);

这将清除旧列表,并将newList中的引用副本添加到旧列表中。如果您对旧列表进行更改,新列表将不受影响(反之亦然)。

注意,您的代码代表,您将旧列表设置为与新列表相同的对象引用。更改其中一个列表(使用add()remove())将更改另一个列表,因为它们共享相同的基础对象。

答案 1 :(得分:0)

我尝试了以下内容:

ArrayList<String> old = new ArrayList<String>();
ArrayList<String> newList = new ArrayList<String>();
old.add("Hi");
old.add("World");
newList.add("League");
newList.add("OfLegends");
System.out.println(old.toString());
old = newList;
System.out.println(old.toString());
System.out.println(newList.toString());

我的输出是:

[Hi, World]
[League, OfLegends]
[League, OfLegends]

所以看起来您的代码正在运行。

答案 2 :(得分:0)

这是您正在寻找的构造函数:

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#ArrayList(java.util.Collection)

  

public ArrayList(Collection<? extends E> c)

     

按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表。