2011-07-11 8 views

答えて

2

同じオブジェクトを両方に追加している限り、これはまさに起こるべきことです。 (何か不足していますか?)

+0

これは答えではありません、コメントでなければなりません。 -1 –

+1

そして、あなたの答えは基本的に私と同じものを基本的に言っています。 – aardvarkk

+0

@ahmetそうであれば、答えに「答えではない」と答える方が良いでしょう。ちなみに、私はこれは*答えだと思いますが、1ライナーです。 – razlebe

2

Javaでは、コレクション内のオブジェクトは参照とともに格納されます。したがって、オブジェクトを変更すると、そのオブジェクトが参照されているすべての場所で更新されます。あなたはそれを心配するべきではありません。あなたは新しいクラスを実装する必要があり、両方の同期を使用するためには

は、ここではテンプレートです:

  • インナーコレクションは、最小権限の原則非公開:私は上記と考え
    class MyCollection{ 
        private TreeSet treeSet; 
        private ArrayList arrayList; 
    
        public synchronized void add(Object o){ 
         treeSet.add(o); 
         arrayList.add(o); 
        } 
    } 
    

    物事

  • ​​一貫したマルチスレッド同時実行性を提供するキーワード。

物事私は上記の考慮されていない:

  • ジェネリックタイプ
  • addメソッドがCollection sが行うすべてのJavaとしてbooleanを返す必要があります。

あなた自身のコードを実装して、より良い解決策をとるべきですが、それが一般的な考えです。

EDIT:別の解決策は、あなたがadd()方法、あなたは他のものを追加できることをオーバーライドしますから、あなた自身のTreeSetのとArrayListのラッパーを書くために(つまり、TreeSetのを使用し、下のArrayList)と何かが追加されたときです。しかし、これは疎結合の練習ではありません。おそらくObserver Frameworkにはもう一つの解決策があります。

関連する問題