2023/7/12·数据结构之简单构造 ArrayList 和 LinkedList

1 · ArrayList的构造

1.1·原理

ArrayList底层就是一个数组,所以这里要还原一个ArrayList的话,就要在类中定义一个数组,当然这里不考虑泛型之类的,只是简单的做一下练习。

public class MyArrayList {
   
    private Object[] arr;
}

1.2·方法

1.2.1·添加

然后添加第一个方法:添加方法add()

 /**
     * 添加
     *
     * @param obj 添加的变量
     */
    public void add(Object obj) {
   
        if (arr == null) {
     //判断是否为第一次添加
            arr = new Object[1];
            arr[0] = obj;
        } else {
   
            Object[] newArr = new Object[arr.length + 1];   //定义用于替换的新数组
            for (int i = 0; i < newArr.length; i++) {
      //基于新数组长度遍历赋值
                if (i != arr.length) {
     //如果不是新数组的最后一个元素
                    newArr[i] = arr[i]; //直接对应赋值
                } else {
   
                    newArr[i] = obj;    //否则将最后一个元素赋值为添加的元素
                }
            }
            arr = newArr;       //替换原数组
        }
    }

1.2.2·遍历和集合大小

当然少不了测试用的show() 方法,以及之后会用到的size() 方法

	public void show() {
   
        for (Object obj : arr) {
   
            System.out.print(obj + " ");
        }
    }
    /**
     * 集合大小
     * @return 返回成员数
     */
    public int size() {
   
        return arr.length;
    }

1.2.3·获取值

获取值的get() 方法

    /**
     * 获取值
      * @param index 索引
     * @return  返回的值
     */
    public Object get(int index) {
   
        if (index < 0 || index >= arr.length) {
   
            System.out.println("没有该索引!");
            return null;
        }
        return arr[index];
    }

1.2.4·修改

修改值的set() 方法

    /**
     * 修改
     *
     * @param index  索引
     * @param newObj 新变量
     */
    public void set(int index, Object newObj) {
   
        if (index < 0 || index >= arr.length) {
   
            System.out.println("没有该索引!");
            return;
        }
        arr[index] = newObj;
    }

1.2.5·移除

最后是移除的remove() 方法

    /**
     * 移除(按索引)
     *
     * @param index 索引
     */
    public void remove(int index) {
   
        if (index < 0 || index >= arr.length) {
        //判断索引是否合法
            System.out.println("没有该索引!");
            return;
        }
        Object[] newArr = new Object[arr.length - 1];   //定义用于替换的新数组
        for (int i = 0; i < newArr.length; i++) {
      //基于新数组长度遍历赋值
            if (i < index) {
           //如果新数组的索引小于要移除的索引
                newArr[i] = arr[i]; //则对应赋值
            } else {
   
                newArr[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值