Kolejne pytanie: czy jest możliwe zaimplementowanie wskaźnikowo struktury danych?
Tak, da się zrobić to o czym myślisz. Przy czym osiągniesz to za pomocą referencji, a nie "wskaźników" (których nie ma).
Jak codereview to codereview - dlaczego nie używasz typów generycznych? Taka klasa to idealny kandydat na to.
private int ERROR = -2147483648;
To już zostało skrytykowane więc nie będę powtarzał, ale tak jak było pisane - zły pomysł.
private int _capacity;
private int _size;
private int _Array[]
Po co capacity? Poważnie, odrzuć (złe) przyzwyczajenia z C++. Nie potrzebujesz capacity, bo tablica zna swoją długość.
No i konwencja nazewnicza, underscory (_) przed każdą zmienną są głupie, ale co kto lubi. Ale tak czy inaczej, jeśli zaczynasz pola klasy od małej litery, bądź konsekwentny (_Array <- ?)
public void reserve (int capacity) {
if (capacity <= 0)
return;
int Temp_array[] = new int[capacity];
for (int i = 0; i < _size; ++i) {
Temp_array[i] = _Array[i];
}
_Array = Temp_array;
_capacity = capacity;
}
Co się ma dziać kiedy capacity jest mniejsze od obecnego size? Obecnie leci wyjątek (w ogóle po co ERROR skoro wybiórczo lecą wyjątki i zwracasz kody błedu).
public void print () {
for (int i = 0; i < _size; ++i) {
System.out.println(_Array[i] + " ");
}
}
Jak też było pisane, to zły kod. Może i w testowym projekcie dla zabawy nie szkodzi nikomu, ale w normalnym projekcie nie wrzucasz funkcji kompletnie niezwiązanych z działaniem i poziomem abstrakcji klasy do niej. Dlaczego wektor jest zależny od system.out?
Dalej, dwa konstruktory i metoda clear() mają zduplikowane funkcje. Optymalnie jeden konstruktor powininen wywoływać drugi, a drugi wywoływać metodę clear (parametryzowaną), albo coś w tym rodzaju.
//default constructor
Bezsensowne komentarze, to nieprawda że każdy komentarz = lepszy kod. Takie komentarze tylko szkodzą.
public void push_back (int value) {
resize (_size + 1, value);
}
Resize to trochę słaba nazwa na metodę biorąc pod uwagę co ona robi. Ale nie o tym miałem - trzymaj się konwencji nazewniczych języka w którym piszesz, push_back to zła nazwa metody w javie. Tak samo shrink_to_fit i pop_back etc