Java中具有多个约束(时间和大小)的集合
我有两个过程(生产者/消费者)。第一个将元素放入集合中,第二个读取它们 我希望第二个进程不要读取每个元素,而是等到:Java中具有多个约束(时间和大小)的集合,java,collections,Java,Collections,我有两个过程(生产者/消费者)。第一个将元素放入集合中,第二个读取它们 我希望第二个进程不要读取每个元素,而是等到: 集合中至少有N个元素或 最后一个元素是在T秒前收到的 Java 5+中是否有允许这种行为的集合?我在考虑实现,但我发现DelayQueue并不是我所需要的 谢谢。我将实现一个可观察的集合。第二个进程将侦听事件,表示N元素在集合中(基于size属性的事件),并且在特定时间内没有添加任何元素(需要一个计时器,在每次add操作时重置) 类似这样的内容(仅起草尺寸要求): 公共Obs
- 集合中至少有N个元素或
- 最后一个元素是在T秒前收到的
N
元素在集合中(基于size
属性的事件),并且在特定时间内没有添加任何元素(需要一个计时器,在每次add
操作时重置)
类似这样的内容(仅起草尺寸要求):
公共ObservableCollection实现了收集{
私人int sizetrigger;
私人收藏;
私有集合侦听器=新的ArrayList();
公共可观测集合(集合){
this.collection=collection;
}
@凌驾
布尔添加(对象元素){
集合。添加(元素);
如果(大小>=sizeTrigger){
fireSizeEvent();
}
}
私有fireSizeEvent(){
for(侦听器:侦听器){
侦听器。阈值已达到(此);
}
}
//addListener、RemovelListener和接口方法的实现
}
我不知道java系列中有类似的东西,guava似乎也没有。也许,如果你试着在LinkedList上自己做,并在这里询问你是否有任何问题,会更容易一些?谢谢。我还发现这也可能是一个很好的起点。
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
}