繁体   English   中英

将ArrayList添加到另一个ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM