我想同時修改ArrayList和TreeSet的元素。如何在Java中共享ArrayList和TreeSet之間的元素?
Ex。當我修改TreeSet中的元素時,Arraylist中的對應元素也被修改。
我想同時修改ArrayList和TreeSet的元素。如何在Java中共享ArrayList和TreeSet之間的元素?
Ex。當我修改TreeSet中的元素時,Arraylist中的對應元素也被修改。
在Java中,集合中的對象與其引用一起存儲。因此,如果您修改了一個對象,它將在其引用的任何位置更新。你不應該關心這一點。
爲了使用都同步你應該實現一個新的類,這裏的模板:
class MyCollection{
private TreeSet treeSet;
private ArrayList arrayList;
public synchronized void add(Object o){
treeSet.add(o);
arrayList.add(o);
}
}
事情上面我認爲:
事情我還沒有考慮以上:
boolean
爲所有Java Collection
就做。您應該實現自己的代碼以獲得更好的解決方案,但通常這就是這個想法。
編輯:另一種解決方案是寫自己的TreeSet中和ArrayList包裝(使用TreeSet和ArrayList的下方),並添加東西時,因爲你重寫add()
方法,你可以添加其他的東西。但這不是一個鬆散的耦合練習。也許Observer Framework還有另一個解決方案。
不知道爲什麼這得到了downvote。它可能表明用戶不完全理解java中的引用,它可能不值-1。 –