2011-01-14 7 views
4

arraylistのようなコレクションが、カスタムオブジェクト(たとえば、いくつかのプロパティを持つPerson)を数千に格納する場合、自分のコードやコレクションのコンストラクタで何かする必要がありますそのような大規模なコレクションのために準備する。多数のオブジェクトを保持するためのチューニングコレクション

私は専用のスレッドなどは考えていませんが、負荷要因のラインに沿っています(上記のシナリオではこれに触れる必要がありますか?)。あなたが行うことができます

おかげ

+0

これは、実際の特定のコレクションの実装に非常に大きく依存します。 ArrayListは実際には内部的にはほんの些細なことですが、適切な初期サイズを選択するだけではあまりありません。他のタイプのコレクション実装には多くの考慮事項があります。 – Affe

答えて

6

私はサイズ変更の数を最小限に抑えるために、最終的なサイズに近くなりますサイズにコレクションを初期化したい:私たちがしているので

List<Person> persons = new ArrayList<Person>(1024); 
8

new ArrayList<T>(10000); 

指定したサイズ(例えば10000)で配列を事前に割り当て、それはあなたが要素を追加して再割り当てする必要がないように。それ以外に、あなたができることは何もありません。また、ArrayListにはどのような参照が格納されているかは関係ありません。情報が実際に最適化に役立つことはありません。

11

異なるアプローチ
私はあなたがデータベースにこのコレクションを格納し、読んで/書く/更新する必要があるときにのみ考慮する必要がありますと思います。

+3

同意します。たぶん、コレクションのサイズが劇的に増加し、RAMが保持できなくなる可能性があります。 –

関連する問題