7

私のアプリはTreeMapを使用してデータを並べ替え、log(n)のルックアップと挿入を行います。これは、アプリの実行中の一般的なケースではうまく機能しますが、アプリを最初に起動するときに、ソートされた順序(昇順)で取得する数百万の長さでTreeMapを初期化する必要があります。

これらの初期化値はすでにソートされているので、ツリーの挿入と再バランスのlog(n)コストを支払うことなく、それらをTreeMapに挿入する方法はありますか?

4

1 に答える 1

12

もちろん!TreeMap.putAllメソッド(およびSortedMapを受け取るTreeMapコンストラクター)は、内部で呼び出されるメソッドを呼び出します。buildFromSortedこれは、ドキュメントで「並べ替えられたデータからの線形時間ツリー構築アルゴリズム」として説明されているため、希望どおりに機能するように聞こえます。

Mapを実装するものをメソッドに指定するだけputAllですが、マップのエントリセットイテレータ(Map.entrySet().iterator())は、並べ替えられた値のリストを返します。

于 2011-03-12T00:33:06.600 に答える