具有快速indexOf的数据结构?

时间:2010-11-29 06:43:00

标签: java data-structures indexing

我需要一个带有O(1)indexOf操作的有序数据结构。我将对象指针存储在数据结构中。有任何想法吗?某种LinkedHashMap?

查看“indexOf”的含义:List.indexOf(Object)

5 个答案:

答案 0 :(得分:6)

这个问题一开始就含糊不清。

  1. 如果你能通过快速indexOf(..)操作确定你的意思,那就太好了。
  2. 你要在馆藏中储存什么样的物品?
  3. 发现indexOf(..)是该集合的唯一责任。
  4. 简单地说,一种方法是维护一个用索引列表索引每个Object或键的方法。

    HashMap<Object, List<Integer>>
    

    同样,这很模糊,如果你指定你试图解决的问题的确切性质,可能会有所帮助。

答案 1 :(得分:2)

听起来你想要一个SortedMapTreeMap作为参考实现。性能为log(n),这可能是您在有序结构中使用查找的最佳方式(至少在标准库中)。

答案 2 :(得分:1)

如果您使用跳过列表或平衡树,则可以获得insertindexOf的O(log n)。

如果您维护一个排序List<Object>来存储您要跟踪的项目,并使用HashMap<Object, Integer>来存储每个项目的起始位置,您可以获得O(1){{1}换取O(n)indexOf

我没有深入思考,但我认为不可能获得O(1)插入和O(log n)indexOf。

答案 3 :(得分:0)

尝试使用PriorityQueue来改善它......

答案 4 :(得分:0)

将Object存储为HashMap中的键和值。我假设你最终想要检索对象。