实现MyArrayList(增删改查)

参考ArrayList源码,实现MyArrayList(增删改查)
代码如下:

package test0725.demo1;

import java.util.Arrays;

/**
 * MyArrayList类
 * 参考ArrayList源码,实现MyArrayList(增删改查)
 */
public class MyArrayList {

    private static int existLength = 0; //当前数组已有长度
    private static Object[] objArray = new Object[existLength]; //创建一个可变数组

    //增加元素(利用可变数组实现一次加入多个元素)
    public void add(Object... obj) {

        Object[] tempArray = objArray; //保存旧数组
        existLength += obj.length; //新数组长度
        objArray = new Object[existLength]; //新数组
        //把旧数组的值赋给新数组
        for (int i = 0; i < tempArray.length; i++) {
            objArray[i] = tempArray[i];
        }
        //把插入的值赋给新数组
        for (int i = tempArray.length,j = 0; i < objArray.length; i++,j++) {
            objArray[i] = obj[j];
        }
        System.out.println("添加成功!");
    }

    //删除元素
    public void remove(int index) {

        if(checkIndex(index)){

            Object[] tempArray = objArray;
            existLength -= 1;
            objArray = new Object[existLength];
            for (int i = 0; i < objArray.length; i++) {
                if(i < index){
                    objArray[i] = tempArray[i];
                } else if(i >= index){
                    objArray[i] = tempArray[i + 1];
                }
            }
            System.out.println("删除成功!");
        } else {
            System.out.println("没有要删除元素的索引,删除失败!");
        }
    }

    //修改元素
    public void set(int index,Object newObj) {
        if(checkIndex(index)){

            objArray[index] = newObj;
            System.out.println("修改成功!");
        } else {
            System.out.println("没有要修改元素的索引,修改失败!");
        }
    }

    //查询元素
    public void query(int index) {
        if(checkIndex(index)){

            System.out.println("查询成功!查询的元素的值为:"  + objArray[index]);
        } else {
            System.out.println("没有要查询元素的索引,查询失败!");
        }
    }

    //判断数组长度是否足够
    public static boolean checkIndex(int index){

        if(index < existLength){
            return true;
        }
        return false;
    }

    //打印数组
    public void showArray(){

        System.out.println("此时的数组为:");
        System.out.println(Arrays.toString(objArray));
        System.out.println("数组的长度为:" + objArray.length);
    }

}

package test0725.demo1;

/**
 * MyArrayList测试类
 */
public class TestArrayList {

    public static void main(String[] args) {

        MyArrayList list = new MyArrayList();

        list.add("Java",17436118,"北榛"); //增
        list.remove(1); //删
        list.set(0,"Java全栈"); //改
        list.query(1); //查
        list.showArray(); //打印新数组
    }
}

打印结果:

添加成功!
删除成功!
修改成功!
查询成功!查询的元素的值为:北榛
此时的数组为:
[Java全栈, 北榛]
数组的长度为:2

猜你喜欢

转载自blog.csdn.net/qq_33591873/article/details/107595237