我想更新對全局對象的引用(與Update all references to an object when the object is updated(reference to a reference)幾乎相同的問題)。Java:全局更新對象引用
我有以下的代碼結構:
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);
感謝
請參閱[Observer-Observable](http://www.codeguru.com/java/tij/tij0175.shtml)模式 – kolossus