《小白兔到大黑牛》第二篇基于源码自己实现简单的ArrayList中简单方法

         无论在工作中还是在学习中,我们一定要养成多看源码的好习惯。

源码是我们的根基,想要在技术上达到更高的高度,必须要打好根基。

希望我们以后的日子里养成这样的习惯。

下面是我结合ArrayList源码及它底层实现是数组的特点,写的一个自己实现的MyArrayList.

package ch.chenhui.www;

public class MyArraylist {
        //定义数组
        private Object[] elementData;
        //定义长度
        private int size;
        //size方法
        public int size(){
            return size;
        }
        //isEmpty方法
        public boolean isEmpty(){
            return size==0;
        }
        //初始长度为10
        public MyArraylist() {    
                this(10);
        }
        //带参构造并判断是否小于0
        public MyArraylist(int init ) {
            if(init<0){
                try {
                    throw new Exception();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            elementData=new Object[init];
        }
        //实现add方法
        public void add(Object o){
            //需要扩容
            if(size+1>elementData.length){
                //创建新数组
                Object[] arr=new Object[size*2+1];
                //拷贝数据 用复制方法
                System.arraycopy(elementData, 0, arr, 0, elementData.length);
                //用for循环也可以进行拷贝
                //for(int i=0;i<elementData.length;i++){
                    //arr[i]=elementData[i];
                //}
                elementData=arr;
            }
            elementData[size]=o;
            size++;
        
        }
        //实现get方法
        public Object get(int index){
            if(index<0||index>=size){
                try {
                    throw new Exception();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return elementData[index];
        }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值