1

String と Int を含む次の単純なクラスがあります。

private static class SuggestionAndScore
{
    private String suggestion; 
    private int score;  
}

最大500,000個のアイテムを含む可能性のあるこれらのオブジェクトのリストを作成します。スコアの値に基づいてこれをソートする最良の方法は何ですか? クラスに Comparator を実装させて Collections.sort を使用するか、より良い方法で使用する必要がありますか? パフォーマンスは非常に重要であるため、最適なソリューションを確実に取得したいので、私の質問です。

4

2 に答える 2

1

並べ替えメソッドがコレクション全体をメモリにロードすることを理解する必要があります。そのため、SuggestionAndScore オブジェクトが大きい場合 (おそらく大きな候補文字列のため)、大量のメモリを消費し、システムをクラッシュさせる可能性さえあります。メモリが問題になる可能性があると思われる場合は、インプレース ソートを使用してください。メモリに問題がない場合は、TreeSet を使用してください。

于 2012-11-22T11:55:53.550 に答える
0

すべてのオブジェクトが一意である場合は、 を使用しますTreeSet。オブジェクトはすでにソートされた順序で格納されているため、最高のパフォーマンスが得られます。( Collections.sort() を呼び出す必要さえありません)

于 2012-11-22T10:48:55.360 に答える