目前,我正在寻找以下数据结构。
我意识到ArrayBlockingQueue
擅长(1)和(2),ArrayList
擅长(3)。是否有来自标准库/ Apache库/ Google库的单一数据结构,这使我能够同时拥有所有3个要求?
答案 0 :(得分:4)
我认为您案例的最佳数据结构是ringbuffer/circular buffer。 ringbuffer在恒定时间内执行所有三个操作。
的实施编辑: ringbuffers的问题在于,您应该在开始时知道最坏情况下该缓冲区中有多少元素。但也存在动态环缓冲区。
答案 1 :(得分:0)
如果速度对于3不重要,则LinkedList可能是合适的。请注意,ArrayBlockingQueue是为多线程访问List的环境而设计的。 ArrayList和LinkedList不是。如果需要从多个线程访问它们,则必须使用Collections.synchronizedList()
包装它们。
答案 2 :(得分:0)
LinkedHashMap是你需要尝试的。它给你最好的。
Hash和Double LinkedList数据结构的组合。