繁体   English   中英

如何使用对象队列实现地图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM