数据结构,插入,删除和随机访问都很好

时间:2011-10-10 07:43:17

标签: java performance data-structures

目前,我正在寻找以下数据结构。

  1. 快速插入尾部。
  2. 快速从头上移除。
  3. 能够执行随机访问。
  4. 我意识到ArrayBlockingQueue擅长(1)和(2),ArrayList擅长(3)。是否有来自标准库/ Apache库/ Google库的单一数据结构,这使我能够同时拥有所有3个要求?

3 个答案:

答案 0 :(得分:4)

我认为您案例的最佳数据结构是ringbuffer/circular buffer。 ringbuffer在恒定时间内执行所有三个操作。

可以找到here和许多其他here

的实施

编辑: ringbuffers的问题在于,您应该在开始时知道最坏情况下该缓冲区中有多少元素。但也存在动态环缓冲区。

答案 1 :(得分:0)

如果速度对于3不重要,则LinkedList可能是合适的。请注意,ArrayBlockingQueue是为多线程访问List的环境而设计的。 ArrayList和LinkedList不是。如果需要从多个线程访问它们,则必须使用Collections.synchronizedList()包装它们。

答案 2 :(得分:0)

LinkedHashMap是你需要尝试的。它给你最好的。

Hash和Double LinkedList数据结构的组合。