Go Back   UseSrv Message Forum > Italiano > Computers - Italiano > Java - Italiano
 

 
Thread Tools Display Modes
  #1  
Old 07-15-2008
ciccio
Guest
 
Posts: n/a
Default Riallocazione array

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  
Old 07-15-2008
Giacomo Ciani
Guest
 
Posts: n/a
Default Re: Riallocazione array

> 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  
Old 07-15-2008
ciccio
Guest
 
Posts: n/a
Default Re: Riallocazione array

"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  
Old 07-15-2008
nigno
Guest
 
Posts: n/a
Default Re: Riallocazione array

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  
Old 07-15-2008
ciccio
Guest
 
Posts: n/a
Default Re: Riallocazione array

"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  
Old 07-15-2008
matish
Guest
 
Posts: n/a
Default Re: Riallocazione array

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  
Old 07-15-2008
nigno
Guest
 
Posts: n/a
Default Re: Riallocazione array


>
> 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  
Old 07-15-2008
cthulhu
Guest
 
Posts: n/a
Default Re: Riallocazione array

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  
Old 07-15-2008
Giuseppe
Guest
 
Posts: n/a
Default Re: Riallocazione array


> 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

Forum Jump


All times are GMT. The time now is 12:38 AM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0