Java

2011-08-08 7 views
5

Çeşitli kısıtlamalara sahip koleksiyonlar (zaman ve boyut) 2 işlemde var (üretici/tüketici). Birincisi, bir Koleksiyondaki öğeleri koyar, ikincisi de onları okur.Java

  • en azından koleksiyonu son öğe alındığı T saniye önce VEYA
  • N unsuru vardır:

    Ben ikinci süreç her bireyin eleman okudum ama beklemek istemiyorlar.

Java 5+'te bu tür davranışlara izin veren herhangi bir Koleksiyon var mı? Ben Queue bir uygulama hakkında düşünüyordum, ama ben sadece ihtiyacım tam olarak değil DelayQueue bulundu.

Teşekkür ederiz.

+0

ben java koleksiyonlarında böyle şeyin farkında değilim, guava çok ona sahip görünmemektedir. Belki de, kendiniz üstte yapmayı denediğinizde daha kolay olurdu, LinkedList diyelim ve burada herhangi bir sorun olup olmadığını sorun. –

cevap

2

gözlenebilir koleksiyon uygulardım. İkinci süreç N elemanları koleksiyonu (olaylar size niteliğe dayalı olarak) olduklarını işaret olaylara dinleyecek ve hiçbir eleman

(yani her add operasyon sıfırlanır, bir zamanlayıcı ihtiyacı) belirli bir süre için eklendiğini (sadece boyut şartı hazırlanması) böyle

şey:

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

Teşekkürler. Ayrıca iyi bir başlangıç ​​noktası olabilecek http://commons.apache.org/dormant/events/apidocs/org/apache/commons/events/observable/ObservableCollection.html adresini de buldum. –