|
#1
|
|||
|
|||
|
Io ho un array[10] e vorrei estenderlo di 10 elementi. posso usare questa
sintassi: array= new Object[20]; così facendo ho un array[20] che parte dallo stesso indirizzo di base del vecchio array[10]??? |
|
#2
|
|||
|
|||
|
> array= new Object[20];
> > così facendo ho un array[20] che parte dallo stesso indirizzo di base del > vecchio array[10]??? Così facendo allochi un NUOVO array di 20 Object (inizializzato al valore di default, che non so quale sia) e ne memorizzi il riferimento in "array"; il riferimento all'array precedente (quello lungo 10, che è del tutto diverso da quello appena creato) viene perso e, se non memorizzato anche da qualche altra parte, prima o poi il garbage collector se lo mangerà! Almeno credo... Ciao Giacomo |
|
#3
|
|||
|
|||
|
"Giacomo Ciani" <giaLEVALOcomo.ciani@inwind.it> ha scritto nel messaggio
news:C5Wfb.11863$e6.408807@twister2.libero.it... > > array= new Object[20]; > > > > così facendo ho un array[20] che parte dallo stesso indirizzo di base del > > vecchio array[10]??? > > Così facendo allochi un NUOVO array di 20 Object (inizializzato al valore di > default, che non so quale sia) e ne memorizzi il riferimento in "array"; il > riferimento all'array precedente (quello lungo 10, che è del tutto diverso > da quello appena creato) viene perso e, se non memorizzato anche da qualche > altra parte, prima o poi il garbage collector se lo mangerà! Almeno credo... > > Ciao > > Giacomo > > e come faccio a creare un nuovo array che mi parte dalla stessa locazione dell'array precedente e che abbia lo stesso nome? in C bastava spostare qualche puntatore e il gioco era fatto... ma con java come si fa? |
|
#4
|
|||
|
|||
|
Usa un Vector, non devi specificarne per forza la capacitÃ* e ti consente di
aggiungere elementi per espanderlo come vuoi. Vector v = new Vector(); v.add("oggetto che vuoi inserire"): quando estrai ricordati di effettuare il cast perchè il metodo get restituisce un Object MioTipo m = (MioTipo) v.get(posizioneNelVector); Ciao, nigno |
|
#5
|
|||
|
|||
|
"nigno" <nigno81@virgilio.it> ha scritto nel messaggio
news:HpWfb.229066$R32.7387441@news2.tin.it... > Usa un Vector, non devi specificarne per forza la capacità e ti consente di > aggiungere elementi per espanderlo come vuoi. > > Vector v = new Vector(); > v.add("oggetto che vuoi inserire"): > > quando estrai ricordati di effettuare il cast perchè il metodo get > restituisce un Object > > MioTipo m = (MioTipo) v.get(posizioneNelVector); > > Ciao, > nigno grazie ma lo so che avrei potuto usare vector... volevo esercitarmi a fare quello che fa vector manualmente. |
|
#6
|
|||
|
|||
|
ciccio wrote:
> e come faccio a creare un nuovo array che mi parte dalla stessa locazione > dell'array precedente e che abbia lo stesso nome? Non puoi. L'allocazione dinamica viene gestita dalla JVM, devi affidarti a lei con ArrayList o Vector. Ciao Matteo -- chi sono e soprattutto chi non sono: http://web.tiscali.it/sifoneteagnalla/ un piccolo programma per studenti universitari: http://www.ifthenelse.it/leonetti/imsv/ |
|
#7
|
|||
|
|||
|
> > grazie ma lo so che avrei potuto usare vector... volevo esercitarmi a fare > quello che fa vector manualmente. ok! crea un nuovo array di 20 elementi e copiaci dentro i 10 elementi del vecchio array poi assegna null al reference del vecchio array. Non essendo piu referenziato "dovrebbe" venir rimosso dal GC. .... Object[] newArray = new Object[20]; for (int i = 0; i<oldArray.length; i++){ newArray[i] = oldArray[i]; } oldArray = null; ciao |
|
#8
|
|||
|
|||
|
ciccio wrote:
> e come faccio a creare un nuovo array che mi parte dalla stessa locazione > dell'array precedente e che abbia lo stesso nome? in C bastava spostare > qualche puntatore e il gioco era fatto... ma con java come si fa? System.arraycopy Marco -- replay: remove .duh.spam |
|
#9
|
|||
|
|||
|
> grazie ma lo so che avrei potuto usare vector... volevo esercitarmi a fare > quello che fa vector manualmente. Hai provato a guardare nei sorgenti delle API di Java ? Mi sembra abbastanza chiaro (come ti hanno già fatto notare si passa per un metodo statico di System, System.arraycopy ed un metodo helper che assicura la capacità dell'array in caso d'inserimento) Ciao Giuseppe |
| Thread Tools | |
| Display Modes | |
|