【发布时间】:2014-04-22 10:06:57
【问题描述】:
我正在尝试创建一个用于从一个地方(节点)到另一个地方的节点的数组列表。 nick 是地点的名称,节点的 pi 是路径中的前一个节点。
ArrayList<Node> bestWay = new ArrayList<Node>();
while(chosen.nick != from){
bestWay.add(chosen);
chosen = chosen.pi;
}
问题是 bestWay 中的所有元素都变得相同。当我打印 bestWay 时,我只得到 PLACE1、PLACE1、PLACE1、PLACE1,而不是 PLACE1、PLACE2、PLACE3、PLACE4。
是否可以将元素复制到数组中,而不是添加指向后行更改的所选元素的指针。 非常感谢!
【问题讨论】:
-
如果
nick变量名是一个字符串,最佳实践是实际使用equals()方法(抱歉,我必须指出这一点)。要存储副本,请使用clone()方法(并可能在 Node 上覆盖它以供您自己使用),或者您可以拥有一个复制构造函数。
标签: java pointers arraylist dijkstra