首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java声明列表的容量

用Java声明列表的容量
EN

Stack Overflow用户
提问于 2011-05-25 18:13:15
回答 8查看 548关注 0票数 5

我经常在我的Android应用程序中使用列表。现在,我正在创建一个Twitter页面,其中列出了最多50个用户的“tweet”。

我有一个定义如下的列表:

List<Tweet> tweets = new ArrayList<Tweet>(MAX_TWEETS);

其中,Tweet是保存twitter更新信息(文本、日期、用户名等)的自定义对象类型,而MAX_TWEETS是一个常量整数值(50)。

问题:

设置这个List的初始容量(如果有的话)有什么好处?

当我知道我的清单会这么小的时候,我是否应该设置一个容量呢?我应该在什么时候/不应该设置一个能力?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-25 18:21:29

ArrayList的默认容量设置为10 (参见JDK1.6源代码)。这意味着在创建时将分配大小为10的数组。如果要添加元素11,容量将增加到16,然后在达到21时再次增加。

如果您不期望超过50个元素,数组将最多调整3次大小。考虑到这么小的数目,这真的不重要。将其设置为50,如果它给了你一张保存数组副本的想法。

实际上,这是正确的尺寸增长公式:

代码语言:javascript
复制
int newCapacity = (oldCapacity * 3)/2 + 1;
票数 2
EN

Stack Overflow用户

发布于 2011-05-25 18:16:41

在填充列表时,设置初始容量可以提高性能,如果您向列表中添加的项数不超过该数量,则还可以减少列表的内存占用。

通过调用trimToSize(),可以减少已增长的列表的内存占用量,并且可能有一个大于存储项数量的后备数组。

票数 3
EN

Stack Overflow用户

发布于 2011-05-25 18:17:14

默认情况下,在Java 6中,列表的大小为10,也就是说,系统在基础数组中创建10个内存槽。如果尝试添加第11个元素,则只创建Array副本。提供一个大小可以提高性能。

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

https://stackoverflow.com/questions/6128900

复制
相关文章

相似问题

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