Arraylist底层源码实现

文章详细介绍了ArrayList的add方法的实现过程,包括首次添加时创建新数组,以及后续添加时如何扩展数组并复制元素。同时,提到了remove方法的实现,涉及创建新数组并移动元素以删除指定索引处的项。
摘要由CSDN通过智能技术生成

Arraylist的add的底层思路

Arraylist的底层源码就是数组构成的

1.先创建一个新的数组 长度为原数组长度+1

2.一个for循环把老数据的数据给到新数组

3.把传过来的值放到数组的最后一个位置

4.替换数组 把新数组覆盖老数组

如果用户是第一次新增怎么办?

如果arr等于null,说明用户是第一次添加,就创建一个新的数组,把用户输入的值传入到数组的第0个下标

 private Object[] arr;//2

    public void add(Object ob){
    //1.如果用户是第一次新增怎么办?
        if(arr==null){//如果arr等于null,说明用户是第一次添加
            arr=new Object[1];//就创建一个新的数组
            arr[0]=ob;//把用户输入的值传入到数组的第0个下标
        }else{
            //1.先创建一个新的数组  长度为原数组长度+1
            Object newarr[] = new Object[arr.length + 1];

            //2.一个for循环把老数据的数据给到新数组
            for(int i=0;i< arr.length;i++){
                newarr[i]=arr[i];//arr[0]  值=1
            }

            //3.把传过来的值放到数组的最后一个位置
            newarr[newarr.length-1]=ob;//1  newarr[1]=2    0
            //4.替换数组  把新数组覆盖老数组
            arr=newarr;

        }

    };

2.查询元素的get方法

public Object get(int index){
        return arr[index];
    };

3.查询集合的长度size()方法

public int size(){
        return arr.length;
    }

4.修改集合元素的set方法()

public void set(int index,Object element){
          arr[index]=element;
    };

5.集合的remove删除方法

第一步:先创建一个长度为原数组长度-1的新数组

第二步:复制原数组的内容到新数组

第三步:替换数组 把新数组覆盖老数组

  public void remove(int index){//1
        //1 2 3 4 5 index 3
    //第一步 先创建一个长度为原数组长度-1的新数组
        Object newarr[]=new Object[arr.length-1];//2
        //第二步  复制原数组的内容到新数组
        for(int i=0;i< arr.length;i++){//i=0  老数组的长度为3
            if(i<index){//1
             newarr[i]=arr[i];
            }else if (i>index){
               newarr[i-1]=arr[i];
            }
        }
        arr=newarr;
    };

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值