我想全局更新对对象的引用(与更新对象时更新对象的所有引用(对引用的引用)几乎相同的问题)。
我有以下代码结构:
class Triangle {
Vertex pos[];
//...
}
ArrayList<Vertex> vertices;
ArrayList<Triangle> triangles;
// Load triangles from file. After all triangles are loaded,
// fill the vertices list with all vertices of all triangles.
正如您在代码示例中看到的那样,加载了第一个三角形。我的一些附加算法只需要所有顶点的列表。因此,为了提高性能,所有三角形的所有顶点都插入到顶点列表中,并且算法只获取列表。
所以可以说我有三角形T1(a,b,c)
,T2(d,e,f)
和T3(e,g,h)
。顶点包含 then [a,b,c,d,e,f,g,h]
。
在一种算法中,我需要用另一个顶点替换一个顶点。例如e
被删除并替换为a
.
通常,您将使用以下代码执行此操作以获取更新的TrianglesT1(a,b,c)
和:T2(d,a,f)
T3(a,g,h)
for (Triangle t : triangles) {
for (int i=0; i<3; i++) {
if (t.pos[i] == e)
t.pos[i] = a;
}
}
是否有另一种方法可以有效地更新所有指向e
的引用,以便引用的新目标是a
. 例如,不要使用循环并遍历所有三角形(效率不高),这样的调用会很有用:
Java.updateReferences(e,a);
谢谢