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中的ArrayList的容量相关推荐

  1. java容量_java中常用集合类的容量

    这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全 ...

  2. java 输出指定位数_java中如何控制输出数字位数

    展开全部 用个例子来说明: ‍ double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行 ...

  3. java c 性能比较_java 中ArrayList与LinkedList性能比较

    java 中ArrayList与LinkedList性能比较 今天看一框架的代码,看到有些 可以使用ArrayList的地方 使用的是 LinkedList,用到的情景是在一个循环里面进行顺序的插入操 ...

  4. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

  5. java list初始容量_java中快速创建带初始值的List和Map实例

    java中快速创建带初始值的List和Map实例 初始化一个List和Map对象并为期加入值的写法如下: List sList = new ArrayList(); sList.add("s ...

  6. java 读取文件的指定行_Java中实现读取文件指定行

    Java中实现读取文件指定行 读取文件指定行要用到类LineNumberReader,它是跟踪行号的缓冲字符输入流,其基类是BufferedReader..它有两个构造方法: public LineN ...

  7. java collection详解_Java中的Collection详解

    在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现. 总的说来,Java API中所用的集合类,都是实现了Collection接口,他的 ...

  8. java构建xml参数_Java中使用XML创建EMAIL模板

    邮件模板 让我们来看看邮件模板的格式.模板是XML文件,它包含一个根元素和一系列根的子元素.根元素是.必要的子元素是, , 和 .可选的子元素是 , , 和 .如果你使用过邮件系统,那么你可以推导出这 ...

  9. java for foreach 效率_Java中LinkedList的fori和foreach效率比较

    在<Java中ArrayList的fori和foreach效率比较>中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较. 1. list ...

最新文章

  1. grep与正则表达式
  2. HTML标签meta在seo中的作用
  3. 说说JSON和JSONP,也许你会豁然开朗,含jQuery使用jsonp用例
  4. 9年当上架构师,我的很多想法变了
  5. mpls工作原理通俗解释_用这两种方法向最终用户解释NLP模型的工作原理还是不错的...
  6. linux部署node web,nodejs怎么部署到Linux上?
  7. phpMyAdmin提示:配置文件权限错误,无法写入!解决方法
  8. python generator
  9. win10浏览器闪退_从没法用到真香!没想到改进了 3 年的 Windows 10 浏览器,竟然这么好用...
  10. 学计算机用16g内存,说出去就是个笑话,两万多电脑内存才16G,我认为这配置不合理!...
  11. AMOS分析技术:二阶验证性因子分析
  12. matlab电磁铁磁场,Matlab在电磁铁设计计算中的应用
  13. 计算机应用基础的重点知识,《计算机应用基础知识》重点总结
  14. Linux驱动之----Linux2.6方式设备注册
  15. LocalDateTime获取月第一天最后一天和年的第一天和最后一天获取周的第一天和最后一天,上周的第一天和最后一天
  16. 移动 电信 联通 APN cmwap cmnet ctwap ctnet 3gwap uniwap 3gnet uninet是...
  17. GEE实现图像随机森林分类
  18. 7-2 海盗分赃 (25 分)(PTA)
  19. leetcode 题解 904.水果成篮(Typescript)
  20. PLC模拟量采集在工业自动化控制中的应用

热门文章

  1. 高考满分作文《说尺子》
  2. python和shell先学哪个_Python自带的shell,其性能优于IPython。_学小易找答案
  3. 【运营小卖部】hr喜欢的运营简历模板
  4. python数字求和程序_python操作excel求和
  5. 如何在上传自定义图片
  6. 系统之家 Ghost XP SP3 纯净标准版 V2012.05
  7. 系统还原和Ghost还原区别
  8. Python入门习题大全——姓名
  9. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
  10. 双重所有格的语法结构和适用场景