4

ハードセットされた配列を操作する代わりに、リストを使用するとJavaで物事がはるかに簡単になることを私は知っています(リストを使用すると、要素を自由に追加/削除でき、自動的にサイズが変更されるなど)。

配列はまったく柔軟ではないため、Javaでは可能な限り回避する必要があることを示唆するものをいくつか読みました(また、配列に必要なサイズがわからない場合など、奇妙な制限を課すことがあります)。

配列の使用をまったくやめて、代わりにリストロジックのみを使用するのは「良い習慣」ですか? リスト型は配列よりも多くのメモリを消費するため、オーバーヘッドが高くなると確信していますが、これは重要ですか? ほとんどのリストは、とにかく横になっている場合、実行時にGCされるので、私が考えているほど大したことではないでしょうか?

4

4 に答える 4

9

私は教義が好きではありません。ルールを知っている; ルールを破る時​​期を知っています。

特にソフトウェアに関しては、「決して」は強すぎます。

ArraysListsは両方ともGCの潜在的なターゲットであるため、これは洗浄です。

はい、開始する前に配列のサイズを知っている必要があります。あなたがそうする場合のために、それは何も悪いことではありません。

java.util.Collectionsjava.util.Arraysクラスを使用して、必要に応じて簡単に行き来できます。

于 2013-03-21T17:51:06.407 に答える
5

(メモリ/パフォーマンス上の理由で)Lists必要がない限り、経験則として使用することをお勧めします。Arrayそれ以外の場合Listsは、通常、保守が容易になるため、将来のバグが発生する可能性が低くなります。

リストは自動拡張の点で柔軟性/機能性が高いため、メモリが不足している場合 (およびリストが作成するオーバーヘッドを許容できない場合)、または拡張/縮小時に配列のサイズを維持することを気にしない場合を除き、お勧めします。リスト。

コードを細かく管理しすぎないようにし、代わりに、より識別可能で読みやすいコンポーネントに焦点を当てます。

于 2013-03-21T17:50:46.560 に答える
2

リストによって異なります。ALinkedListはおそらく必要な場合にのみスペースを占有しますが、ArrayList通常、容量に達するとスペースが大幅に増加します。内部的にArrayListは、配列を使用して実装されますが、これは常に必要なサイズよりも大きい配列です。ただし、オブジェクトではなく参照を格納するため、ほとんどの場合、メモリオーバーヘッドはごくわずかであり、利便性はそれだけの価値があると思います。

于 2013-03-21T17:52:38.520 に答える
1

コレクション フレームワークを使用するというこのアプローチに従っていると言わざるを得ません。コレクションは、配列よりも多くの利点と利便性を提供しますが、パフォーマンスが低下する可能性があります。

理解しやすく、壊れにくいコードを書く方が良いです。配列には、アクセスすべきではない配列のビットにアクセスしたり、配列内の多くのものにアクセスしたりしないようにするために、多くのチェックコードを入れる必要があります。ほとんどの場合、パフォーマンスは問題にならないので、気にする必要はありません。

于 2013-03-21T17:57:10.273 に答える