gpt4 book ai didi

Java:全局更新对象引用

转载 作者:行者123 更新时间:2023-12-04 05:26:50 28 4
gpt4 key购买 nike

我想全局更新对对象的引用(与 Update all references to an object when the object is updated(reference to a reference) 几乎相同的问题)。

我有以下代码结构:

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) .
顶点包含然后 [a,b,c,d,e,f,g,h] .

在一种算法中,我需要用另一个顶点替换一个顶点。例如 e被删除并替换为 a .

通常,您可以使用以下代码执行此操作以获取更新的三角形 T1(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);

谢谢

最佳答案

在我看来,顶点类应该只是可变的,你应该只改变它的坐标:

e.setCoordinates(a.getCoordinates());

这样,所有对 e 的引用都会自动获得新坐标。如果这不是一个选项,也许您应该将 Vertex 对象包装成 MutableVertex对象,并使三角形对象和顶点列表包含 MutableVertex 的实例.

关于Java:全局更新对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111265/

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