是否有在 java 中实现的数据结构提供以下保证:
- 元素总是排序的
- 添加一个元素至少执行 O(lg n)
- 在特定索引处获取元素至少执行 O(lg n)
基本上我希望能够做到以下几点:
SomeDataStructure elements = new SomeDataStructure();
elements.add(5);
elements.add(1);
elements.add(10);
assertEquals(1, elements.get(0));
assertEquals(5, elements.get(1));
assertEquals(10, elements.get(2));
其中add
和get
方法都至少在 O(lg n) 时执行。
这似乎应该能够用树结构来完成,但我找不到任何提供索引 get 方法的实现。我还研究了为此使用/扩展 java.util.TreeMap ,但所有的旋转逻辑都是私有的,所以我无法跟踪树是如何被改变的。