簡體   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