2 回答

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的問(wèn)題就在這里:
public List<Node> getNodes() {
return nodes;
}
...
List<Node> nodes = graph.getNodes();
您正在修改方法中的“私有”列表。如果要避免修改,請(qǐng)使用 int 或在其中創(chuàng)建新列表并傳遞給列表構(gòu)造函數(shù)。findPathCollections.unmodifiableList(nodes)getNodes()findPathgraph.getNodes()

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
改變
List<Node> nodes = graph.getNodes();
自
List<Node> nodes = new ArrayList<>(graph.getNodes());
這將在 findPath 方法中創(chuàng)建列表的本地副本。
或者你可以改變
public List<Node> getNodes() {
return nodes;
}
自
public List<Node> getNodes() {
return new ArrayList<>(nodes);
}
這將返回 getNodes() 方法中列表的副本。
添加回答
舉報(bào)