次の保証を提供する 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 を使用/拡張することも検討しましたが、すべての回転ロジックはプライベートであるため、ツリーがどのように変更されているかを追跡できません。