嗨,我有 2 个 Java 类,Gossip
和Node
,我想要那个Gossip
将保存 Node
的所有对象的列表类和我想要每个 Node
对象也将具有该列表。我尝试按以下方式编写:
public class Node {
private Boolean val = null;
private LinkedList<Node> list;
static Random rand = new Random();
public Node(LinkedList<Node> list) {
this.list=list;
}
... the rest of Node functions ...
}
以及Gossip
承包商:
public class Gossip {
private int count;
private int n;
private LinkedList<Node> list;
public Gossip (int n) {
this.count = 0;
this.n = n;
list = new LinkedList<Node>();
for (int i=0; i<n; i++){
list.add(new Node(list));
}
}
... the rest of Gossip functions ...
}
因为我习惯了C++
我不确定它在这里是如何工作的,以及它是否会像指针一样工作,每个 Node
将有一个完整的列表或将每个 Node
只会有一个带有 Node
的列表s 在它和它自身之前创建。另外,我不需要更改程序上的列表,只需从中读取即可,但这很有趣,会更改那个 Node
列表中的操作将影响所有其他 Node
s 的列表?
最佳答案
只有一个节点列表,所有节点都引用这个列表。
这是因为在 Node 构造函数中,赋值 this.list=list;
不会创建对象的副本 - 它只是使 this.list
与 相同>list
,但请记住它们都是(在堆栈上)对对象(在堆上)的引用。
因此,如果您通过其中一个节点更改列表,所有其他节点都会看到更改。
关于java - 在JAVA中向列表中的每个对象添加完整的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408277/