/**
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:封阳台等成都网站设计、网络营销推广解决方案、网站设计等建站排名服务。
*/
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
/**
@serial
*/
private int size;
//最大数组大小
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
//默认实例为一个空数组
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
//添加元素
public boolean add(E e) {
//确定容量
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
private void ensureCapacityInternal(int minCapacity) {
ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));
}
private void ensureExplicitCapacity(int minCapacity) {
modCount++;
// overflow-conscious code
//超过扩容
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
//扩容方式 旧容量+旧容量右移一位
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
//循环清除
public void clear() {
modCount++;
// clear to let GC do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
//删除 --很巧妙的删除
public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
//获得需要移动的位数
int numMoved = size - index - 1;
if (numMoved > 0)
//进行复制,最后一位会保留下来
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
//数组大小减少一位,最后一位赋值为空
elementData[--size] = null; // clear to let GC do its work
return oldValue;
}
网页标题:ArrayList的源码分析
URL链接:https://www.cdcxhl.com/article2/gcjdoc.html
成都网站建设公司_创新互联,为您提供做网站、云服务器、搜索引擎优化、ChatGPT、网页设计公司、商城网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联