[解決済み] コレクションに追加してからソートするのと、ソートされたコレクションに追加するのでは、どちらが速いのでしょうか?
2023-07-22 12:06:56
質問
もし私が
Map
のように
HashMap<Integer, ComparableObject> map;
で、自然順序でソートされた値のコレクションを取得したいのですが、どの方法が一番早いですか?
(A)
のようなソート可能なコレクションのインスタンスを作成します。
ArrayList
のようなソート可能なコレクションのインスタンスを作成し、値を追加し、ソートする。
List<ComparableObject> sortedCollection = new ArrayList<ComparableObject>(map.values());
Collections.sort(sortedCollection);
(B)
のような順序付きコレクションのインスタンスを作成します。
TreeSet
のような順序付きコレクションのインスタンスを作成し、それから値を追加します。
Set<ComparableObject> sortedCollection = new TreeSet<ComparableObject>(map.values());
結果のコレクションは決して変更されないので、ソートは一度だけ行われる必要があることに注意してください。
どのように解決するのですか?
TreeSetには
log(n)
の時間複雑性を保証します。
add()/remove()/contains()
のメソッドを使用します。
をソートする
ArrayList
は
n*log(n)
演算を行うが
add()/get()
のみを取る。
1
の操作だけです。
つまり、検索がメインで、頻繁にソートしないのであれば
ArrayList
が良いでしょう。もし、ソートは頻繁に行うが、リトリーブはあまり行わないのであれば
TreeSet
が良い選択でしょう。
関連
-
-bash: java: コマンドが見つからない 解決方法
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] コレクションを反復処理し、ループ内でオブジェクトを削除する際に ConcurrentModificationException を回避する。
-
[解決済み] 辞書をキーでソートするにはどうしたらいいですか?
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
シェルコマンドやスクリプトのJavaコール
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
maven レポート エラー 解決不可能な親POM
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
java 365*1000*60*60*24 計算問題