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);
}
}
物事
。物事私は上記の考慮されていない:
Collection
sが行うすべてのJavaとしてboolean
を返す必要があります。あなた自身のコードを実装して、より良い解決策をとるべきですが、それが一般的な考えです。
EDIT:別の解決策は、あなたがadd()
方法、あなたは他のものを追加できることをオーバーライドしますから、あなた自身のTreeSetのとArrayListのラッパーを書くために(つまり、TreeSetのを使用し、下のArrayList)と何かが追加されたときです。しかし、これは疎結合の練習ではありません。おそらくObserver Frameworkにはもう一つの解決策があります。
これがなぜdownvoteを得たか分からない。ユーザーがjavaの参照を完全に理解していないことを示すかもしれませんが、おそらく-1とは言えません。 –