オブジェクトへの参照をグローバルに更新したい (オブジェクトが更新されたときにオブジェクトへのすべての参照を更新する (参照への参照)とほぼ同じ質問)。
次のコード構造があります。
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);
ありがとう