首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >list with one String是否等于(在内存使用中) list with one String and one null object?

list with one String是否等于(在内存使用中) list with one String and one null object?
EN

Stack Overflow用户
提问于 2012-01-03 22:40:59
回答 7查看 158关注 0票数 2

我想弄清楚一些事情。

是这样的吗:

代码语言:javascript
运行
复制
    List <String> list = new ArrayList<String>();
    list.add("abc");
    list.add(null);

等于这个

代码语言:javascript
运行
复制
    List <String> list = new ArrayList<String>();
    list.add("abc");

内存使用率?

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-03 22:43:48

ArrayList的initial capacity是10(参考文献)。也就是说,即使您的集合中只有一个条目,底层数组的大小也将为10。这些引用将默认为null,因此将第二个引用设置为null既不会影响arraylist的内部状态(就底层数组而言),也不会影响其内存消耗。

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

来自上面链接的文档:

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

票数 5
EN

Stack Overflow用户

发布于 2012-01-03 22:43:52

在本例中是这样的,因为ArrayList默认分配了一个包含10个位置的数组(在openjdk中)。

如果您使用LinkedList,那么答案将是否定的。

票数 0
EN

Stack Overflow用户

发布于 2012-01-03 22:44:01

也许,第一个列表有两个元素,第二个列表有一个元素,所以第一个列表更大。然而,大多数列表默认为10个元素,两个列表的大小可能相同,但如果第二次添加需要扩展列表,那么它将占用更多内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8713916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档