数据结构-数组(二)

270 阅读1分钟

上面一篇文章对我们的数组类进行add方法的操作,现在我们看看其删除,修改,查询的操作

1.查询

/**
     * 获取index的元素
     * @param index 索引
     * @return
     */
    public int get(int index){
        if(index < 0 || index >= size){
            throw new IllegalArgumentException("error index");
        }
        //data进行隐藏,用户只能用data[index]的值而获取不到这个数组data
        //好处,对用户传来的index进行判断
        return data[index];
    }

只要返回对应的index值即可,因此查询效率特别快

2.修改

   /**
     * 修改index处元素
     * @param index 索引
     * @param e 元素
     */
    public void set(int index, int e){
        if(index < 0 || index >= size){
            throw new IllegalArgumentException("error index");
        }
        data[index] = e;
    }

只要对应index赋值即可完成修改,因此修改的效率特别快

删除数组的元素

    /**
     * 移除指定index的元素
     * @param index 
     * @return 
     */
    public int remove(int index){
        if(index < 0 || index >= size){
         
            throw new IllegalArgumentException("error index");
        }
        
        int ret = data[index];
        for (int i = index + 1; i <size ; i++){
            data[i - 1] = data[i];
        }
        size --;
        return ret;

    }

4.数组动态扩容

 /**
     * 数组扩容
     * @param newCapacity 扩容的容量
     */
    private void resize(int newCapacity){
        E[] newData = (E[])new Object[newCapacity];
        //遍历原来数组 将值赋值给新数组
        for(int i = 0 ; i < size; i++){
            newData[i] = data[i];
        }
        //将新数组赋值给data
        data = newData;
    }