JAVA实现动态数组【代码】

package arr;

public class ArrayList {
    private int size;
    private int[] element;

    private static final int DEFAULT_CAPACITY = 3;
    private static final int ELEMENT_NO_FOUND = -1;

    //初始化动态数组
    public ArrayList(int capacity) {
        capacity = (capacity < DEFAULT_CAPACITY) ? DEFAULT_CAPACITY : capacity;
        this.size = 0;
        this.element = new int[capacity];
    }


    //初始化动态数组
    public ArrayList() {

        this(DEFAULT_CAPACITY);
    }

    //尾插数据
    public void add_data(int data) {
        //判断数组是否满
        if (size == DEFAULT_CAPACITY) {
            //重新创建一个数组来接受小数组
            int[] temp = new int[DEFAULT_CAPACITY * 2];
            //拷贝小数组中的元素到大数组中
            for (int i = 0; i < size; i++) {
                temp[i] = element[i];
            }
            //更改数组指向
            element = temp;

        }
            element[size] = data;
            size++;

    }

//按下标插入数据
        public void add_index(int index,int data)
        {
            //判断下标
            if(index<0||index>size)
            {
                throw new IndexOutOfBoundsException("下标错误");
            }
            //判断数组是否满
            if (size == DEFAULT_CAPACITY) {
                //重新创建一个数组来接受小数组
                int[] temp = new int[DEFAULT_CAPACITY * 2];
                //拷贝小数组中的元素到大数组中
                for (int i = 0; i < size; i++) {
                    temp[i] = element[i];
                }
                //更改数组指向
                element = temp;

            }
            for (int i = size; i >=index ; i--) {
                element[i]=element[i-1];
            }
                element[index] = data;
                size++;


        }



  //删除数据
        public int remove_index(int index)
        {
            if(index<1||index>size)
            {
                throw new IndexOutOfBoundsException("下标错误");
            }
            int old = element[index-1];
            for (int i = index-1; i < size; i++) {
                element[i]=element[i+1];
            }
            size--;
            return old;
        }


    public void remove_data(int data) {

        remove_index(IndexOf(data));
        System.out.println(data+"删除成功");
    }


 //修改某个位置的元素
        public int set ( int index, int data)
        {
            if (index < 1 || index >size)//index>size
            {
                throw new IndexOutOfBoundsException("Index:" + index + ",size:" + size);
            }
            int old = element[index];
            element[index-1] = data;//index-1
            return old;
        }

        //查找某个元素的下标
        public int IndexOf ( int data)
        {
            for (int i = 0; i < size; i++) {
                if (data == element[i]) return i+1;
            }
            return ELEMENT_NO_FOUND;
        }

 //获取某个位置的元素

    public int get ( int index)
    {
        if (index < 0 || index >= size) {
            throw new IndexOutOfBoundsException("Index:" + index + ",size:" + size);
        }
        return element[index];
    }
        //数组是否包含某个元素
        public boolean contains ( int data)
        {
            return IndexOf(data) != ELEMENT_NO_FOUND;
        }

//清除所有元素
        public void clear ()
        {
            if (size < 50) {
                size = 0;
            } else {
                element = null;
            }

        }
//打印对象里面的元素


        @Override
        public String toString () {
            StringBuffer string = new StringBuffer();
            string.append("size=").append(size).append(",[");
            for (int i = 0; i < size; i++) {
                if (i != 0) string.append(",");
                string.append(element[i]);
            }
            string.append("]");

            return string.toString();
        }




    }

如果您对代码有不一样的见解,请Q我

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值