gpt4 book ai didi

Java:从同一类引用 ArrayList 的对象

转载 作者:行者123 更新时间:2023-12-02 06:22:57 24 4
gpt4 key购买 nike

我是 Java 新手,这可能真的很简单,但我坚持了下来。我必须创建代表图中所有节点的 Node 类。我将用它来实现像 dfs 这样的基本算法。我只需要使用一个字段,即节点的所有邻居的 ArrayList。每个创建的节点都会为其邻居提供一个引用。到目前为止,这是我的类(class):

public class Node{
protected ArrayList<Node> neighbours = new ArrayList<>();

public Node(ArrayList<Node> neighbours){
for(int i=0;i<neighbours.size();i++){
this.neighbours.add(neighbours.get(i));
}

}
public void setNeighbours(ArrayList<Node> neighbours){
this.neighbours=null;
}
public ArrayList<Node> getNeighbours(){
return this.neighbours;
}
}

例如,在本例中,我有 Node A = new Node([B,C]),这是可以的。有时我不想将 A 用作 ArrayList [B,C],而只是用作节点 A,并且它仍应指向 [B,C]。这是可以实现的吗?我怎样才能做到呢?也许我的类还需要一个构造函数来实现这一点?非常感谢任何帮助,谢谢。

最佳答案

最好不要使用传入的列表,而是复制其内容:

public void setNeighbours(ArrayList<Node> neighbours){
this.neighbours.clear();
this.neighbours.addAll(neighbours);
}

因为如果您使用它,另一个进程可能会在您的类不知道更改的情况下更改它。

关于Java:从同一类引用 ArrayList<Objects> 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com