Newsgroup: it.comp.java
Titolo: shiftare gli elementi di un array

Dovrei shiftare gli elementi di un array nella maniera più efficiente
possibile. C'è un modo?
Visto che avrò degli array di stringhe molto ma molto grandi, ho abbandonato
l'idea di utilizzare un altro array. Per lo stesso motivo, mi chiedo se mi
convenga shiftare uno a uno tutti gli elementi; potrebbero essere
migliaia... :-(
uffi... chi mi può dare un aiuto?
Grasie! ;)
Manu

Cosa devi fare esattamente?
Marco


> Cosa devi fare esattamente?
Ho dei file di log da cui prendo il testo, lo divido in righe (stringhe) e
lo metto nell'array.
Comunque ho visto che ce la farò con qualche variabile, o magari un array un
po' più piccolo. Be' d'altra parte un po' di memoria la dovrò
sprecare....... se comunque conosci un'idea migliore è ben accetta!!
ciao ciao...
Manu

 ha scritto nel messaggio
news:baiuev$fhc$1...@lacerta.tiscalinet.it...

Potresti usare un Vector, oppure un'altra struttura a lista. In quel caso
diventa tutto molto più rapido, perche' non devi spostare tutti i valori
dell'elenco, ma solo qualche riferimento.
Ciao!
--
Huan

"Huan" <eag...@liberoDalloSpam.it> wrote in message
news:wS7za.23773$lK4.6...@twister1.libero.it...

Mah, pensavo che un vector alla fine richiedesse sempre della memoria
aggiuntiva, per questo mi ero buttata sugli array senza pensarci.... va be',
farò qualche prova con i dati alla mano...
Manu

 essere migliaia... :-(
Me lo chiedo anch'io :) Perché shiftare gli elementi? Non fai prima a 
incrementare/decrementare l'indice di accesso?
Ciao :)
pole
-- 
Note: Some input words use a deprecated author.
Note: Read with -deprecation to understand.
http://web.tiscali.it/meridies


Vector al suo interno usa un array. L'overhead in termini di
elaborazione e' dovuto alla gestione dinamica della dimensione di tale
array e alla sincronizzazione. Per il secondo punto puoi ovviare usando
ArrayList. Per quanto riguarda la memoria avrai in piu' qualcosa dovuto
ai vari dati necessari alla gestione del tutto ma non credo che questa
parte sia dominante rispetto ai dati stessi.
IMHO dovresti usare Vector o ArrayList. Se proprio non lo vuoi fare e
vuoi gestirti tu lo shift dei dati, allora guardati il metodo remove(int
index) di Vector: in sostanza usa System.arraycopy.
ciao
-- 
Seti@Home Java Applets
http://www.mycgiserver.com/~maruko/

 Manu
In effetti i vector usano molta piů memoria di un semplice array e appena
posso li evito, ma il motivo che li rende interessanti č proprio il modo in
cui usano questa memoria.
Ad esempio se hai una array di 1000 oggetti e vuoi togliere il secondo devi
far scalare tutti gli altri, leggendo e riscrivendo 998 oggetti.
Invece in un vector (o in una arraylist) semplicemente porti il riferimento
del primo oggetto direttamente al terzo, modificando un solo valore. (il
secondo oggetto verra' poi riciclato dal garbage collector)
Ovvio, tutto questo richiede piu' memoria, pero' ti garantisce prestazioni
notevolmente superiori. Da come hai descritto il tuo problema mi sembra la
soluzione migliore.
Ciao!
--
Huan


qui non ti seguo.


 qui non ti seguo.
Beh, ho solo cercato di spiegare cosa succedeva meccanicamente all'interno
di un vector; che in realta' (capito adesso) succede solo negli arraylist.
Per togliere l'elemento due da una lista metti fai puntare al primo il
terzo, saltando il secondo.
  uno -> due -> tre      diventa      uno    due    tre
                                       |             ^
                                       |-------------|
Il secondo elemento viene escluso, quindi non fa più parte della lista. Non
essendoci, poi, piu' riferimenti all'oggetto il garbage collector lo prende
come memoria da liberare.
Ciao!
--
Huan


Ho capito il tipo di struttura dati a cui ti riferisci ma non e' quella
che usa ArrayList... anche se il nome puo' fuorviare.
Arraylist e' sostanzialmente identico ad un Vector senza la
sincronizzazione. La cosa e' facilmente verificabile guardando i
sorgenti delle due classi.


 sorgenti delle due classi.
Acc, e' vero... Mi sono fatto ingannare dal nome. In effetti l'associazione
List -> struttura a lista e' spontanea quanto ingannevole...
Ciao!
--
Huan

 possibile. C'è un modo?
System.array.copy()
- Dario

"Huan" <eag...@liberoDalloSpam.it> schrieb im Newsbeitrag
news:4Ltza.26757$lK4.7...@twister1.libero.it...
