黑马程序员技术交流社区

标题: 关于ArrayList的问题 [打印本页]

作者: 秦守志    时间: 2014-12-18 21:04
标题: 关于ArrayList的问题
建立的ArrayList 是使用数组来实现的, 但是数组的长度一旦被定下来, 就不能改变了。但在给ArrayList 对象中添加元素的时候,却没有长度限制,用什么方法来判断当前的数组是否需要扩容,应该扩容多少
作者: 鹏少    时间: 2014-12-18 21:36
ArrayList底层采用Object类型的数组实现,当使用不带参数的构造方法生成ArrayList对象时,
实际上会在底层生成一个长度为10的Object类型数组。
    首先,ArrayList定义了一个私有的未被序列化的数组elementData,用来存储ArrayList的对象列表(注意只定义未初始):
  private transient Object[] elementData;
     
    其次,以指定初始容量(Capacity)或把指定的Collection转换为引用型数组后实例化elementData数组;如果没有指定,则预置初始容量为10进行
实例化。把私有数组预先实例化,然后通过copyOf方法覆盖原数组,是实现自动改变ArrayList的大小(size)的关键。有人说ArrayList是复杂的数组,我
认为不如说ArrayList是关于数组的系统的方法组合。

作者: 嗷嗷嗷    时间: 2014-12-18 22:02
楼上的技术不错,理论学的很好




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2