【第22期】观点:IT 行业加班,到底有没有价值?

arraylist——ArrayList的容量

转载 2016年08月31日 09:46:48
ArrayList.size()//方法返回的是一个int,所以它最多能放Integer.MAX_VALUE((2^31)-1)个元素。

转自http://blog.csdn.net/arui319/article/details/3557743

List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。
ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大小。
每个ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。


ArrayList是经常会被用到的,一般情况下,使用的时候会像这样进行声明:
List arrayList = new ArrayList();
如果像上面这样使用默认的构造方法,初始容量被设置为10。当ArrayList中的元素超过10个以后,会重新分配内存空间,使数组的大小增长到16。
可以通过调试看到动态增长的数量变化:10->16->25->38->58->88->...


也可以使用下面的方式进行声明:
List arrayList = new ArrayList(4);
将ArrayList的默认容量设置为4。当ArrayList中的元素超过4个以后,会重新分配内存空间,使数组的大小增长到7。
可以通过调试看到动态增长的数量变化:4->7->11->17->26->...


那么容量变化的规则是什么呢?请看下面的公式:
((旧容量 * 3) / 2) + 1
注:这点与C#语言是不同的,C#当中的算法很简单,是翻倍。


一旦容量发生变化,就要带来额外的内存开销,和时间上的开销。
所以,在已经知道容量大小的情况下,推荐使用下面方式进行声明:
List arrayList = new ArrayList(CAPACITY_SIZE);
即指定默认容量大小的方式。

举报

相关文章推荐

Java基础——ArrayList源码分析

更多Java集合文章,请关注我的博客:http://blog.csdn.net/qq_30379689 Java基础——ArrayList的工作原理 本篇文章包含以下内容,请点击左上角+号展开目录...

Java中的ArrayList的容量

List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

JAVA集合二 ——list(02、ArrayList)

Java-集合之List      特别声明:      *本文只是备忘录。

hashtable arraylist 容量

  Each ArrayList instance has a capacity. The capacity is the size of the array&...

Java集合ArrayList实现原理——源码分析

一,ArrayList简述      ArrayList是实现了List接口的动态数组,动态数组是指它的大小是可变的。ArrayList实现了所有可选列表操作,并允许保存包括null在内的所有元素...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)