我想知道一些事情.
这是:
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)
在内存使用?
谢谢!
ArrayList 的初始容量是十(引用).也就是说,即使你的集合中只有一个条目,底层数组的大小也是10.这些引用将默认为null,因此将第二个引用设置为null既不会影响arraylist的内部状态(就基础数组而言)也不会影响其内存消耗.
如果您添加了第11项(设置为null),ArrayList则会扩展其容量,因此您将消耗更多内存,而是因为ArrayList为您的String引用创建了额外的存储桶.
从上面链接的文档:
每个ArrayList实例都有一个容量.容量是用于存储列表中元素的数组的大小.它始终至少与列表大小一样大.当元素添加到ArrayList时,其容量会自动增加.除了添加元素具有恒定的摊销时间成本这一事实之外,未指定增长策略的详细信息.