我需要一个带有O(1)indexOf操作的有序数据结构。我将对象指针存储在数据结构中。有任何想法吗?某种LinkedHashMap?
查看“indexOf”的含义:List.indexOf(Object)
答案 0 :(得分:6)
这个问题一开始就含糊不清。
indexOf(..)
操作确定你的意思,那就太好了。indexOf(..)
是该集合的唯一责任。 简单地说,一种方法是维护一个用索引列表索引每个Object
或键的方法。
HashMap<Object, List<Integer>>
同样,这很模糊,如果你指定你试图解决的问题的确切性质,可能会有所帮助。
答案 1 :(得分:2)
答案 2 :(得分:1)
如果您使用跳过列表或平衡树,则可以获得insert
和indexOf
的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中的键和值。我假设你最终想要检索对象。