[英]Adding An ArrayList To Another ArrayList
我目前正在研究Java程序员1证书 ,下面的代码片段是有关将ArrayList添加到另一个证书的。
ArrayList<String> myArrList = new ArrayList<String>();
myArrList.add("One");
myArrList.add("Two");
ArrayList<String> yourArrList = new ArrayList<String>();
yourArrList.add("Three");
yourArrList.add("Four");
myArrList.addAll(1, yourArrList);
for (String val : myArrList)
System.out.println(val);
这就是作者的话:
如果您修改这些列表myArrList和yourArrList中的公共对象引用,会发生什么情况? 这里有两种情况:
在第一个中,使用两个列表之一重新分配对象引用。 在这种情况下,第二个列表中的值将保持不变。
在第二种情况下,您将修改任何公共列表元素的内部,在这种情况下,更改将反映在两个列表中。
作者想说什么? 我对他提到的两个案例感到有些困惑!
任何帮助将不胜感激。
我想我知道作者想说什么。 但是字符串是一个不好的例子。 想象一下这样的事情。 他正在解释将类的两个不同实例添加到列表,或将相同实例添加到两个列表之间的区别。 当您将相同实例添加到两个列表中时,如果修改该实例,更改将反映在两个列表中。
import java.util.ArrayList;
public class Example {
private static class Node {
private int value;
public Node(final int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(final int value) {
this.value = value;
}
}
public static void main(final String... args) {
final ArrayList<Node> nodes1 = new ArrayList<>();
final ArrayList<Node> nodes2 = new ArrayList<>();
// add two different Node objects that happen to have same value
nodes1.add(new Node(1337));
nodes2.add(new Node(1337));
Node node = new Node(69);
// add the same node to both lists
nodes1.add(node);
nodes2.add(node);
node.setValue(420);
// do your join here and print result to see {1337, 420, 1337, 420}
nodes1.addAll(0, nodes2);
for (final Node n : nodes1)
System.out.println(n.getValue());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.