关于ArrayList$add(int index, E object)方法
ArrayList有一个构造方法是带容量参数的
public ArrayList(int capacity) { if (capacity < 0) { throw new IllegalArgumentException("capacity < 0: " + capacity); } array = (capacity == 0 ? EmptyArray.OBJECT : new Object[capacity]); }
ArrayList<String> lables=new ArrayList<String>(6);
public void add(int index, E object) { Object[] a = array; int s = size; if (index > s || index < 0) { throwIndexOutOfBoundsException(index, s); } if (s < a.length) { System.arraycopy(a, index, a, index + 1, s - index); } else { // assert s == a.length; Object[] newArray = new Object[newCapacity(s)]; System.arraycopy(a, 0, newArray, 0, index); System.arraycopy(a, index, newArray, index + 1, s - index); array = a = newArray; } a[index] = object; size = s + 1; modCount++; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
list size 是当前元素个数(计数器) ,如果当前的元素超过了Array的length(这个就是你的capacity),就无法存储导致数据存储异常,list基于数组来存储元素,要保证数据被正确存储 且不越界。
引用来自“有明丶”的评论
你看代码里已经很明确了,add的时候先比较了当前list的size,这个size是当前list内元素数量,不是arraylist的容量。
你看代码里已经很明确了,add的时候先比较了当前list的size,这个size是当前list内元素数量,不是arraylist的容量。
没人知道吗
引用来自“有明丶”的评论
你看代码里已经很明确了,add的时候先比较了当前list的size,这个size是当前list内元素数量,不是arraylist的容量。