项目方案:动态数组的实现

引言

动态数组是一种数据结构,它可以在运行时根据需要动态改变数组的大小。在Java中,动态数组可以通过使用ArrayList类来实现。本项目方案将提供一个自定义的动态数组类,可以提供类似ArrayList的功能,并且能够支持常见的数组操作。

动态数组类的定义

动态数组类是一个可以存储任意类型元素的数组,它能够自动调整数组的大小。下面是动态数组类的定义:

public class DynamicArray<T> {
    private Object[] array;
    private int size;
    private int capacity;

    public DynamicArray() {
        this.capacity = 10;
        this.array = new Object[capacity];
        this.size = 0;
    }

    public void add(T element) {
        if (size == capacity) {
            increaseCapacity();
        }
        array[size] = element;
        size++;
    }

    public void remove(int index) {
        if (index < 0 || index >= size) {
            throw new IndexOutOfBoundsException("Index is out of range");
        }
        for (int i = index; i < size - 1; i++) {
            array[i] = array[i + 1];
        }
        size--;
    }

    public T get(int index) {
        if (index < 0 || index >= size) {
            throw new IndexOutOfBoundsException("Index is out of range");
        }
        return (T) array[index];
    }

    public int size() {
        return size;
    }

    private void increaseCapacity() {
        capacity *= 2;
        Object[] newArray = new Object[capacity];
        System.arraycopy(array, 0, newArray, 0, size);
        array = newArray;
    }
}

类图

下面是动态数组类的类图表示:

classDiagram
    DynamicArray <|-- ArrayList
    DynamicArray : - Object[] array
    DynamicArray : - int size
    DynamicArray : - int capacity
    DynamicArray : + DynamicArray()
    DynamicArray : + void add(T element)
    DynamicArray : + void remove(int index)
    DynamicArray : + T get(int index)
    DynamicArray : + int size()
    DynamicArray : - void increaseCapacity()

使用示例

下面是一个使用动态数组类的示例代码:

public class Main {
    public static void main(String[] args) {
        DynamicArray<Integer> numbers = new DynamicArray<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);

        System.out.println("Size: " + numbers.size());

        for (int i = 0; i < numbers.size(); i++) {
            System.out.println("Element at index " + i + ": " + numbers.get(i));
        }

        numbers.remove(2);

        System.out.println("Size after removing an element: " + numbers.size());

        for (int i = 0; i < numbers.size(); i++) {
            System.out.println("Element at index " + i + ": " + numbers.get(i));
        }
    }
}

输出结果:

Size: 4
Element at index 0: 1
Element at index 1: 2
Element at index 2: 3
Element at index 3: 4
Size after removing an element: 3
Element at index 0: 1
Element at index 1: 2
Element at index 2: 4

总结

本项目方案提供了一个自定义的动态数组类,它可以根据需要自动调整数组的大小,并支持常见的数组操作。通过使用该类,可以方便地管理和操作动态数组。使用示例代码展示了如何使用动态数组类来进行数组操作。希望本项目方案对您有所帮助!