1

コレクションが高速で、後で反復される値を格納するために使用できるメモリフットプリントが小さいのはどれですか? (注文する必要はありません)

4

2 に答える 2

1

これはユースケースに大きく依存します。だからCollections、結局のところ、たくさんあります!一人一人が別のことに良いです。

最も重要なCollectionのは、何が必要ですか?反復する以外に、それを使って行うアクションはありますか?いくつの要素を保存しますか?一部の要素は複製されますか?パフォーマンス面またはメモリ面での制限はありますか?この情報がなければ、私たちはあなたに一般的な答えしか与えることができません。


最も一般的なアプローチは、配列を使用することです。真剣に。メモリを節約したい場合は、配列を使用してください。

それがオプションでない場合ArrayListは、配列を内部的に使用し、一般的に最もメモリ効率が高いため、それが最良の選択ですCollection(と一緒にArrayDeque、私は思います)。スペースが事前に割り当てられ、いっぱいになるたびに2倍の大きさになります。したがって、余分なスペースが使用されないように、適切な数のスロットで構築するようにしてください。

あなたが特定の何かを探しているなら、あなたはこれらを使うことができます:

  • ビットを格納するには、BitSet
  • プリミティブを保存するには、Trove
  • 多くの要素がに複数回存在する場合は、CollectionいくつかのBag実装を試してみてくださいHashBag。またはマルチセット
于 2012-05-18T09:29:35.660 に答える
0

これはユースケースに大きく依存します。

コレクションである必要はありますか?配列だけじゃない?or (身震い)LinkedListのように事前に部屋を割り当てないので、私は aを使います。ArrayListVector

于 2012-05-18T09:20:08.400 に答える