17

たとえば、

    int a=2; int b=3;
    ArrayList<Integer>integers=new ArrayList<Integer>();
    integers.add(a); integers.add(b);

    String c="cow"; String d="deer";
    ArrayList<String> strings= new ArrayList<String>();
    strings.add(c); strings.add(d);

それらは異なる量のメモリを必要としますか? どんな助け/答えも大歓迎です、ありがとう!

4

5 に答える 5

48

ArrayLists 自体は参照のコレクションにすぎず、保持するオブジェクトのタイプに関係なく、同じ量のメモリ (同じサイズの場合) を使用します。ただし、ArrayList によって参照される項目はすべて、予想どおり、異なる量のメモリを使用します。

于 2013-08-09T04:01:35.627 に答える
10

ArrayLists は参照のコレクションにすぎないため、ArrayList のサイズは、それが指すオブジェクトの型には依存しません。したがって、ArrayList のメモリは参照オブジェクトの型に依存しません。

于 2013-08-09T04:21:37.637 に答える
7

あなたの場合、理論的には、実行時のジェネリックでは「存在しない」ため、同じ量のメモリを消費し、両方の配列は実際にはオブジェクトの配列です。

于 2013-08-09T04:01:40.547 に答える
0
ArrayList arr = new ArrayList<Foo>(10);

arr には、バッキング配列の参照が 1 つだけ含まれています。このバッキング配列には、ヒープ内の 10 個の異なる Foo オブジェクトの 10 個の参照があります。

于 2013-08-09T04:01:59.890 に答える
-1

ArrayList は String などのオブジェクトです。コレクションを内部 Object[] 配列に格納します。これらの配列は、メモリの場合は異なる量を使用しますが、ArrayList 自体は同じサイズになります。

于 2013-08-09T06:24:53.470 に答える