我想同时修改ArrayList和TreeSet的元素。
实施例。当我从TreeSet修改元素时,Arraylist中的相应元素也被修改。
答案 0 :(得分:2)
只要您向两者添加相同的对象,这正是应该发生的事情。 (我错过了什么吗?)
答案 1 :(得分:2)
在Java中,集合中的对象与其引用一起存储。因此,如果您修改对象,它将在引用它的任何位置更新。你不应该担心这一点。
为了同时使用两个同步你应该实现一个新类,这里是模板:
class MyCollection{
private TreeSet treeSet;
private ArrayList arrayList;
public synchronized void add(Object o){
treeSet.add(o);
arrayList.add(o);
}
}
我上面考虑的事情:
synchronized
关键字提供一致的多线程并发。我上面没有考虑的事情:
boolean
一样返回Collection
。您应该实现自己的代码以获得更好的解决方案,但通常,这就是想法。
编辑:另一个解决方案是编写自己的TreeSet和ArrayList包装器(下面使用treeset和arraylist),并在添加内容时,因为您将覆盖add()
方法,你可以添加其他东西。但这不是松耦合练习。也许还有Observer Framework的另一个解决方案。