3

私が考えることができる唯一の理由は、通常の配列が使用するメモリが少なく (おそらく無視できる程度)、プリミティブを格納できることです。その場合でも、ラッパー クラスを使用できます。

4

4 に答える 4

12

通常の配列、必要な正確なサイズで作成されるため、まず最初に使用するメモリが少なくなりますが、ArrayList はその容量の半分を浪費する可能性があり、ArrayList が十分に大きい場合は無視できません。

get()また、配列内の要素へのアクセスは、および同様のメソッドの呼び出しを必要としないため、高速です。これは直接メモリ アクセスです。

最後になりましたが、配列は正確で正しい型 (ArrayList に直接格納できないプリミティブ型であっても) で作成されますが、ArrayList は常に内部にObject[]あり、パフォーマンスが低下します。各要素を抽出するために必要な追加のキャストについて。

于 2013-10-28T21:03:24.450 に答える
4
  1. それはより少ないスペースを使用します
  2. 速いです
  3. プリミティブを格納できます
  4. 定義されたサイズを適用し、エラーの発見に役立ちます
于 2013-10-28T21:02:25.720 に答える
2

機能面をカバーする 2 つの既に優れた回答に加えて、読みやすさを忘れてはならないと思います。

文字列の 1 次元以上の配列 (たとえば 3 つ) がある場合は、次のように記述する必要はありません。

List<List<List<String>>> stringCube = new ArrayList<List<List<String>>>;
// all the initialization

できるとき

String[][][] stringCube = new String[2][2][2];

あるいは

String[][][] stringCube = {{{"000"},{"001"}},
                           {{"010"},{"011"}},
                           {{"100"},{"101"}},
                           {{"110"},{"111"}}};

(配列)リストを使用する場合、これを短くすることはできません。

于 2013-10-28T21:14:40.757 に答える