2011-08-08 6 views
5

私は2つのプロセス(プロデューサ/コンシューマ)を持っています。最初の要素はCollectionに要素を置き、2番目の要素は要素を読み取ります。Javaのいくつかの制約(時間とサイズ)を持つコレクション

  • は、少なくとも、コレクションの最後の要素が受信されたT秒前OR
  • におけるN個の要素があります。

    は、私は2番目のプロセスは、すべての個々の要素を読んで、しかしまで待たないでほしいです。

この種の動作を可能にするJava 5+のコレクションはありますか?私はQueueの実装について考えていましたが、私はDelayQueueを見つけましたが、これは私が必要とするものではありません。

ありがとうございます。

+0

私はJavaのコレクションにそのような何かに気づいていないよ、グアバは、あまりにもそれを持っていないようです。おそらく、自分でそれをやってみると、LinkedListと言いましょう。それに何か問題があれば、ここで質問してください。 –

答えて

2

私はの観測可能なコレクションを実装します。第2のプロセスは、N要素が(size属性に基づくイベントの)コレクション内にあり、特定の時間に要素が追加されていないことを通知するイベントを聴取する(add操作ごとにリセットされるタイマを必要とする)

(ちょうど サイズ要件を起草)このような

何か:

public ObservableCollection implements Collection { 

    private int sizetrigger; 
    private Collection collection; 
    private Collection<Listener> listeners = new ArrayList<Listener>(); 
    public ObservableCollection(Collection collection) { 
    this.collection = collection; 
    } 

    @Override 
    boolean add(Object element) { 
    collection.add(element); 
    if (size >= sizeTrigger) { 
     fireSizeEvent(); 
    } 
    } 

    private fireSizeEvent() { 
     for(Listener listener:listeners) { 
     listener.thresholdReached(this); 
     } 
    } 

    // addListener, removeListener and implementations of interface methods 
} 
+0

ありがとうございます。私はまた、http://commons.apache.org/dormant/events/apidocs/org/apache/commons/events/observable/ObservableCollection.htmlを見つけました。これも良い出発点になります。 –