[英]How to Implement Map with Queue of objects
我有点困惑如何实现以下输出,
{
"finalOutput":{["test":{[],[],[],[],[],[],[],[],[],[]},
"test1":{[],[],[]....[]},
"test2":{[],[]....[]}]}
}
。
对于此输出,一键应具有10个带有队列概念的对象。 例如, college : {[],[],[],[],[],[],[]..}
密钥college : {[],[],[],[],[],[],[]..}
。 每个键不得超过10个值。 所以我正在考虑使用ConcurrentLinkedDeque<Object>
。 我不知道如何执行。
我在想使用MultivaluedMap
但是我需要检查每个键有10个或更少的对象。 不应大于10,因此需要使用FIFO策略进行检查。(如果大于10,则需要先删除并插入值。)
谁能建议我如何实施。 如果有人有样品,请帮助我。
您可以设计一个大小为10的BlockingQueue
值的地图。 如果某些地方可能并发导致不安全,请告诉我。 我认为还可以。
Map<String,BlockingQueue<Object>> map = new ConcurrentHashMap<String,BlockingQueue<Object>>(){
@Override
public BlockingQueue<Object> put(String key,
BlockingQueue<Object> value) {
BlockingQueue<Object> current = this.get(key);
synchronized (current) {
if(current.size() == 10){
current.remove();
}
current.add(value.peek());
}
return super.put(key, current);
}
@Override
public BlockingQueue<Object> get(Object key) {
if(this.contains(key))
return super.get(key);
else
return new LinkedBlockingQueue<Object>(10);
}
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.