Cześć, chcę powiększyć tablicę w chwili kiedy zapełni się ona w 80%. Problem polega na tym, że kiedy ją powiększam teoretycznie wszystko jest ok ale nie do końca:
-ustawiam konstruktorem rozmiar tablicy (na początku na 10 elementów):
public TabStack(int sizeTab){
tab = new Student[sizeTab];
}
- funkcja size() wygląda tak:
public int size(){
return tab.length;
}
Teraz powiększam tablicę:
if (firstFree>=(double)0.8*tab.length){
Student tab2[] = new Student[size()];
System.arraycopy(tab,0,tab2,0,tab.length);
Student tab[] = new Student[size()+size()/2];
firstFree=0;
for(int i=0; i<tab2.length*0.8;i++){//przepisuje do nowej tablicy
tab[i] = tab2[i];
firstFree++;
}
System.out.println("Rozmiar tablicy po powiększeniu: "+tab.length);
System.out.println("size "+size());
I teraz po powiększeniu o połowę, tab.length zwraca rozmiar 15, natomiast size() zwraca dalej 10. Dlaczego tak się dzieje?
EDIT: W zasadzie to po kolejnej iteracji pętli tab.length zwraca już 10. Czyli nie w ten sposób powinienem rozszerzyć tablicę?
Student tab[] = new Student[size()+size()/2];
EDIT2: Dobra mam już, zamiast
Student tab[] = new Student[size()+size()/2];
to
tab = new Student[size()+size()/2];
:D