java - 在JAVA中向列表中的每个对象添加完整的对象列表

标签 java class list

嗨,我有 2 个 Java 类,GossipNode ,我想要那个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/

相关文章:

java - Maven Eclipse 插件错误?无法自动添加工作区依赖 JAR 到运行配置模块路径

Python - 将包含 IP 地址和不同数据的文本文件的列表转换为 CSV

java - 如何为JavaPos指定jpos.xml路径

java - JWT token 问题

c++ - 我可以通过指定结构或类来避免前向声明吗

c++ - 初始化类中的模板对象 (c++)

Java 动态绑定(bind)失败

r - 将 R 中的两个列表组合成一个数据框

python - 从两个列表中找到最佳组合

java - 带有 class.forname() 的 Spring