Реализация динамического массива в Java

просьба помочь разобраться с темой динамических массивов Java.

Мне необходимо создать класс DynamicArray, который хранит в себе массив, и имеет методы для добавления void add(T el), void remove(int index) удаления и извлечения T get(int index) из него элементов, при переполнении текущего массива, должен создаваться новый, большего размера. Методы необходимо реализовать.

Для возможности работы с различными классами DynamicArray должен быть дженериком, также можно воспользоваться методами из класса java.util.Arrays.

Моя реализация класса:

public class DynamicArray<T> { 
private int size = 0;  

Object[] array = new Object[10];

public DynamicArray() { 
}

public void add(T el) {
    if (size == array.length) { 
        array = Arrays.copyOf(array, array.length * 2);
    }
    array[size] = el;
    size++;
}


public void remove(int index) {
    System.arraycopy(array, index + 1, array, index, array.length - 1 - index);
}

public T get(int index) {
    return (T) array[index];
}

public int getLength() {
    return array.length;
}

}

Подскажите, пожалуйста, правильно ли у меня реализованы методы void add(T el), void remove(int index) удаления и извлечения T get(int index)? Насколько я понимаю, одним из примеров динамического массива является ArrayList и нужно реализовать методы наподобие него. Заранее спасибо за помощь!


Ответы (1 шт):

Автор решения: Alex
public static class DynamicArray<T> {
    private T[] array = (T[]) new Object[5];
    private int size = 0;

    public void add(T el) {
        if (size == array.length) {
            array = Arrays.copyOf(array, array.length + 5);
        }
        array[size++] = el;
    }

    public void remove(int index) {
        System.arraycopy(array, index + 1, array, index, size - index - 1);
        size--;
    }

    public T get(int index) {
        if (index < 0 || index >= size) {
            throw new ArrayIndexOutOfBoundsException();
        }
        return array[index];
    }
}
→ Ссылка