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

ArrayList 本身只不过是引用的集合,无论它们持有什么类型的对象,它们都占用相同数量的内存(如果大小相同)。但是,ArrayList 引用的项目都占用了您所期望的不同数量的内存。

于 2013-08-09T04:01:35.627 回答
10

ArrayList 只不过是引用的集合,因此 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 回答