📜  在java中编写一个简单的arraylist递归代码(1)

📅  最后修改于: 2023-12-03 15:07:54.031000             🧑  作者: Mango

在Java中编写一个简单的ArrayList递归代码

什么是ArrayList?

ArrayList是Java中一个动态数组类,可以存储不同的数据类型,并且长度可以动态地改变。它实现了List接口,是最常用的集合类之一。

递归函数

递归是一种解决问题的方法,它将问题分解成更小的子问题,直到最后问题被分解成足够小的子问题可以被解决。递归函数就是调用自身的函数。

怎样用递归实现ArrayList?

我们可以用递归方式模拟出ArrayList的基本功能,例如添加元素、获取元素、删除元素、判断是否包含元素等。具体代码如下:

public class MyArrayList<E> {

    private int size = 0;
    private static final int DEFAULT_CAPACITY = 10;
    private Object[] elements;

    public MyArrayList() {
        elements = new Object[DEFAULT_CAPACITY];
    }

    public E get(int index) {
        if (index < 0 || index >= size) {
            throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
        }
        return (E) elements[index];
    }

    public void add(E e) {
        if (size == elements.length) {
            ensureCapacity();
        }
        elements[size++] = e;
    }

    private void ensureCapacity() {
        int newSize = elements.length * 2;
        elements = Arrays.copyOf(elements, newSize);
    }

    public int getSize() {
        return size;
    }

    public boolean isEmpty() {
        return size == 0;
    }

    public boolean contains(E e) {
        return indexOf(e) >= 0;
    }

    public int indexOf(E e) {
        for (int i = 0; i < size; i++) {
            if (e.equals(elements[i])) {
                return i;
            }
        }
        return -1;
    }

    public E remove(int index) {
        if (index < 0 || index >= size) {
            throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
        }
        E element = (E) elements[index];
        for (int i = index; i < size - 1; i++) {
            elements[i] = elements[i + 1];
        }
        size--;
        return element;
    }
}
代码解释

我们首先定义了一个MyArrayList类,它包含了一些基本的成员变量和方法。

在这个类中,我们用一个Object类型数组来存储元素,并实现了List接口中的方法,例如get、add、remove等。

在add方法中,我们判断了元素数组是否已经满了,如果满了,就调用enSureCapacity方法将数组扩容。

在remove方法中,我们根据索引从数组中删除元素,并将后面的元素依次往前移动一位来填补空缺的元素。

总结

递归是一种非常有用的解决方法,可以帮助我们更好地理解一些复杂的问题。在这个简单的代码实例中,我们利用递归来实现了一个基本的ArrayList,虽然它不完整也不够完美,但是它足以帮助我们理解ArrayList的基本原理。