1

ランダム挿入で最適に機能するJavaコレクションの使用を検討しています。たくさん挿入して、最後に一度だけコレクションを読みます。

私が望む機能は、指定されたインデックス、<0、current_length>の間の任意の場所に要素を追加することです。どのコレクションを使用するのが最も効率的ですか?

4

2 に答える 2

0

参考のための便利なリンク:http: //www.coderfriendly.com/wp-content/uploads/2009/05/java_collections_v2.pdf

入力後の情報をどのように読むか(そしてそれがあなたにとってどれほど重要か)は完全にはわかりません。HashmapまたはArrayListは、実行しようとしていることに応じて意味があります。また、スレッドセーフなものを探しているかどうかもわかりません。それが役に立てば幸い。

于 2012-06-10T18:00:34.100 に答える
-2

使用の非効率性はList問題に特有のものです。javadocに記載されているように、何かを追加するたびに、後続のすべての要素のインデックスを再作成する必要があります。

現在その位置にある要素(存在する場合)と後続の要素を右にシフトします(インデックスに1つ追加します)。

あなたの質問/コメントから、あなたはたくさんのsを持っているように見えますObject、そしてあなたはあなたが行くにつれてそれらを分類しています。この問題のより効率的な解決策は、Comparator(またはオブジェクトを実装する)を記述してから(または)Comparableを使用することです。Collections.sort(list, comparator)Collections.sort(list)

Objectあなたはあなたのが他の変数に基づいてソートされていることを示唆するかもしれません。この場合、Object他の変数をフィールドとして拡張Comparableし、のようなメソッドを使用して、の拡張を作成できますgetOriginal()。これらのラップされたオブジェクトをリストに追加し、並べ替えてからリストを反復処理し、元のオブジェクト(からgetOriginal())を新しいリストに追加します。

コレクションの並べ替えアルゴリズムの詳細については、このSOの質問を参照してください

于 2012-06-10T20:29:45.233 に答える