Witam
Jestem samoukiem i obecnie przepracowuję temat dotyczący klas generycznych w Javie.
Mam problem ze stworzyłęm klasy "DynamicArray<E>", która będzie dynamicznie powiększała i pomniejszała swój rozmiar.
Domyślny rozmiar ma być 10; Klasa ma posiadać metodę add()(dodaje element) oraz remove()(usuwa ostatnio dodany element).
Czy ktoś z doświadczonych tutaj użytkowników mógłby spojrzeć na kod i doradzić czy dobrze wykonałem zadanie??
A jeśli nie to proszę o wskazanie gdzie leży błąd
Z góry dziękuję
import java.util.Arrays;
public class DynamicArray<E> {
private int array[];
private int size;
private int capacity;
public DynamicArray() {
array = new int[2];
size = 0;
capacity = 2;
}
public void addElement(int element){
if (size == capacity){
ensureCapacity(2);
}
array[size] = element;
size++;
}
public void addElement(int index, int element) {
if (size == capacity) {
ensureCapacity(10);
}
for (int i=size-1; i>=index; i--) {
array[i+1] = array[i];
}
array[index] = element;
size++;
}
private void ensureCapacity(int minCapacity) {
int temp[] = new int[capacity * minCapacity];
for (int i = 0; i < capacity; i++) {
temp[i] = array[i];
}
array = temp;
capacity = capacity * minCapacity;
}
public int getElement(int index) {
return array[index];
}
public void remove(int index) {
if (index>=size || index<0) {
System.out.println("Brak elementu w indeksie");
}else {
for (int i = index; i <size-1 ; i++) {
array[size-1] = 0;
size--;
}
}
}
public void trimToSize() {
System.out.println("Przytnij tablice");
int temp[] = new int[size];
for (int i = 0; i < size; i++) {
temp[i] = array[i];
}
array = temp;
capacity = array.length;
}
public int size(){
return size;
}
public int capacity(){
return capacity;
}
public void printElements(){
System.out.println("elements in array are :"+ Arrays.toString(array));
}
}