带有一个String的列表是否等于(在内存使用中)列出一个String和一个null对象?

dor*_*506 2 java list

我想知道一些事情.

这是:

    List <String> list = new ArrayList<String>();
    list.add("abc");
    list.add(null);
Run Code Online (Sandbox Code Playgroud)

等于这个

    List <String> list = new ArrayList<String>();
    list.add("abc");
Run Code Online (Sandbox Code Playgroud)

在内存使用?

谢谢!

Bri*_*new 5

ArrayList 的初始容量是十(引用).也就是说,即使你的集合中只有一个条目,底层数组的大小也是10.这些引用将默认为null,因此将第二个引用设置为null既不会影响arraylist的内部状态(就基础数组而言)也不会影响其内存消耗.

如果您添加了第11项(设置为null),ArrayList则会扩展其容量,因此您将消耗更多内存,而是因为ArrayList为您的String引用创建了额外的存储桶.

从上面链接的文档:

每个ArrayList实例都有一个容量.容量是用于存储列表中元素的数组的大小.它始终至少与列表大小一样大.当元素添加到ArrayList时,其容量会自动增加.除了添加元素具有恒定的摊销时间成本这一事实之外,未指定增长策略的详细信息.