我是Java新手,这可能真的很容易,但是我坚持使用它。我必须创建代表图表中所有节点的Node类。我将使用它来实现dfs之类的基本算法。我只需要使用一个字段,该字段是节点所有邻居的ArrayList。每个创建的节点都对其邻居进行引用。到目前为止,这是我的课程:
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],而只是将其用作Node A,它仍应指向[B,C]。这可以实现吗?我该怎么办?也许我的课程为此需要一个更多的构造函数?任何帮助表示感谢,谢谢。
最佳答案
最好不要使用传入的列表,而是复制其内容:
public void setNeighbours(ArrayList<Node> neighbours){
this.neighbours.clear();
this.neighbours.addAll(neighbours);
}
因为如果您使用它,则另一个过程可能会在您的班级不知道更改的情况下对其进行更改。