Реализация динамического массива в 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 шт):
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];
}
}