复习ArrayList源码增删改查

ArrayList
⭐add(E e)方法说明:添加元素的时候需要先判断数组容量是否可以容纳新添加这个元素,首先会比较原数据的长度和添加后数组长度,是否超出原数组长度;
    1.如果没有超出,则直接将该新增元素添加到该数组中;
    2.如果超出,则进行扩容。
        2.1正常情况扩容为原数组长度的1.5倍,然后再与添加后数组长度进行比较,
            2.1.1)如果仍然比添加后的数组长度小,那么直接使用添加后数组的长度进行扩容;
            2.1.2)如果发现扩容后的数组长度比最大数组长度MAX_ARRAY_SIZE还要大,则进行超大扩容,
                在此之中先判断是否已经溢出,
                    如果没有溢出,则进行判断该长度是否比MAX_ARRAY_SIZE,如果比MAX_ARRAY_SIZE大,则使用Integer.MAX_VALUE;反之则使用MAX_ARRAY_SIZE(Integer.MAX_VALUE-8);
        2.2最后使用Arrays.copyOf进行旧数据填充到新数组中
⭐remove(int index)
    1.首先先判断你要删除的索引下标是否越界,越界则抛出异常
    2.然后找到指定要删除的索引下标的元素,并计算删除后需要移动后续元素的个数
    3.最后调用System.arraycopy这是一个本地方法,将后续元素的微信进行前移
        public static native void arraycopy(Object src,int  srcPos,Object dest,int destPos,int length);
⭐get(int index)
    1.先比较索引值与数组长度,如果索引值比数组长度大,则抛出异常
    2.返回该索引下标元素
⭐set(int index, E element)
    1.先比较索引值与数组长度,如果索引值比数组长度大,则抛出异常
    2.取出该索引指向的旧元素
    3.将新元素E element覆盖到该索引位置
    4.返回旧元素

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值