Sì, la sua struttura dati interna è banalmente un Object[].Originariamente inviato da ittaglia
Da quanto ho capito a lezione il vector crea un array di Object.
Nota che il valore passato al costruttore è solo la capacità (iniziale), non il numero "logico" di elementi nel Vector.Originariamente inviato da ittaglia
Vector<Pagina> collezionePagine= new Vector<Pagina>(numeroPagine);
Dove numeroPagine naturalmente è il numero delle pagine che devo avere ( cioè quando è grande il vettore.
Basta un add(oggetto) o addElement(oggetto) (quest'ultimo è il "vecchio" metodo introdotto prima del add) invece che complicarsi la vita con insertElementAt e l'indice.Originariamente inviato da ittaglia
Fino a qui ho fatto qualche errore?codice:for (int i = 0; i < numeroPagine; i++) { collezionePagine.insertElementAt(new Pagina(nodi), i); }
Ok.Originariamente inviato da ittaglia
Anche questo è giusto vero? secondo java java dovrebbe eliminare quello che c'è in posizione index e sostituirlo con un nuovo oggetto di tipo pagina.codice:collezionePagine.set(index, new Pagina(nodi));
No, è corretto. Il Vector ha aumentato il numero "logico" di elementi di 1 unità (mette un null in quel indice in più). Ma la sua capacità "fisica" è aumentata molto di più. È normale, perché funziona a capacità "espansa". Questo permette di non dover istanziare un nuovo array ad ogni add/insert. Quindi solo ogni tanto istanzia un nuovo array e ricopia i reference dal vecchio al nuovo array e il tempo perso per questo è "ammortizzato" nel tempo.Originariamente inviato da ittaglia
Arriviamo ora alla cosa che non mi torno. Ho bisogno che il mio vettore possa ingrandirsi di 1. Quindi secondo quando letto in Java dovrei fare
Giusto? però se vado in debug vedo molti più spazi nuovi creati. Come mai? Il metodo è sbagliato?codice:collezionePagine.setSize(numeroPagine+1);