《Java基础知识》Java ArrayList源码分析4

559 篇文章 0 订阅
546 篇文章 0 订阅

指定位置添加元素:

public void add(int index, E element) {
        rangeCheckForAdd(index);         // 判断index是否有效

        ensureCapacityInternal(size + 1);  // 上面已经讲过原理。
        System.arraycopy(elementData, index, elementData, index + 1,
                         size - index);    // 从该位置复制一份后面的值,全部往后移。
        elementData[index] = element;      // 最后在当前位置修改元素值。
        size++;
    }

看看ArrayList 是如何删除的:.

public E remove(int index) {
        rangeCheck(index);    // 判断角标是否越界
        modCount++;           //操作计数器(用于迭代器迭代的时候如果这个list发送变化,能够及时感知到,提前报错,而不是获取错误数据)
        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;
    }


尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.337.search-card.all.click&vd_source=3117718bf474f48fd81d26049c0c97ac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值