A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦守志 中级黑马   /  2014-12-18 21:04  /  939 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

建立的ArrayList 是使用数组来实现的, 但是数组的长度一旦被定下来, 就不能改变了。但在给ArrayList 对象中添加元素的时候,却没有长度限制,用什么方法来判断当前的数组是否需要扩容,应该扩容多少

2 个回复

倒序浏览
ArrayList底层采用Object类型的数组实现,当使用不带参数的构造方法生成ArrayList对象时,
实际上会在底层生成一个长度为10的Object类型数组。
    首先,ArrayList定义了一个私有的未被序列化的数组elementData,用来存储ArrayList的对象列表(注意只定义未初始):
  private transient Object[] elementData;
     
    其次,以指定初始容量(Capacity)或把指定的Collection转换为引用型数组后实例化elementData数组;如果没有指定,则预置初始容量为10进行
实例化。把私有数组预先实例化,然后通过copyOf方法覆盖原数组,是实现自动改变ArrayList的大小(size)的关键。有人说ArrayList是复杂的数组,我
认为不如说ArrayList是关于数组的系统的方法组合。
回复 使用道具 举报
楼上的技术不错,理论学的很好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马