PDA

Visualizza la versione completa : [JAVA] Array dinamici


Ilmalcom
18-11-2005, 15:20
Ciao a tutti.

Di norma quando lavoro con Java ricorro alla classe Vector per implementare gli array dinamici. Per un esercizio universitario ho però ricevuto una specifica molto esaustiva in cui sono presenti le firme dei metodi e sono rimasto perplesso osservando un paio di esse.

Uno dei metodi in questione dovrebbe restituire Comparable[] ma io non posso sapere a priori quanti elementi dovrò memorizzarci. Una soluzione brutta ed inefficiente, ma corretta, sarebbe quella di scorrere tutta la mia struttura dati una volta per contare quanti elementi di tipo Comparable rispondano ai requisiti, creare il vettore statico e scorrere di nuovo la struttura dati per riempire il vettore.

Inutile dire che questa soluzione non mi soddisfa. Possibile che Java non implementi un meccanismo per ridimensionare il vettore senza perderne il contenuto o qualcosa di analogo? Credo proprio di no :)

Saluti e grazie per l'aiuto.

V1RuZ
18-11-2005, 17:57
In java gli array sono statici, potresti però usare un vector per memorizzare gli elementi e poi il metodo toArray() per restituire un array di Object...

Ilmalcom
18-11-2005, 18:01
Originariamente inviato da V1RuZ
In java gli array sono statici, potresti però usare un vector per memorizzare gli elementi e poi il metodo toArray() per restituire un array di Object...
Non so se posso usare Vector, poichè java.util non viene incluso nello scheletro dell'esercizio. Ci sono altre alternative? Visto che la correzione si basa su un test automatico, non vorrei non compilasse...

V1RuZ
18-11-2005, 18:14
non fai prima a postare il testo dell'esercizio almeno si capisce un po meglio il tutto?

cxrnvs
21-11-2005, 13:16
la tua soluzione e' la "migliore" se non puoi usare Vector.

potresti usare uno Stack , una lista o un coda....anche se Vector e' la manna dal cielo.

posta il testo dfell'esercizio cosi' capiamo meglio.

LeleFT
21-11-2005, 14:08
Vorrei far notare che il Vector fa esattamente quello che a te è richiesto di fare a mano.

Un Vector è un oggetto che al suo interno contiene un array di Object. Ad ogni inserimento questo array viene ricopiato in uno temporaneo e ne viene ricreato uno nuovo con 1 elemento in più (o n elementi in più se diversamente specificato nel costruttore). Poi l'array temporaneo viene ricopiato in quello nuovo e nell'ultimo elemento viene aggiunto l'oggetto passato al metodo add().


Ciao. :ciauz:

cxrnvs
21-11-2005, 14:46
Ad ogni inserimento questo array viene ricopiato in uno temporaneo e ne viene ricreato uno nuovo con 1 elemento in più

il Vector per default raddoppia ogni volta, non aggiunge un elemento (sarebbe algortimicamente disastroso!!)

Loading