PDA

View Full Version : [JAVA] come cancellare un elemento da un array..


etzocri
26-06-2003, 15:27
ciao,
sono tornato.
dovrei implementare un metodo che elimina un elemento da un'array..
in maniera efficente..
posto il metodo che ho scritto io ma che non funziona bene.. manda in crash il programma..

public void cancellaelemento(String daric)
{int j=0,i,x=0;
while(j<vettore_m.length&&x==0)
{
if(daric.compareTo(vettore_m[j].nome)==0)
{x=1;
tempv=new magazzino[dim-1];
int s=0;
int l=0;

while(l<j)
tempv[s++]=vettore_m[l++];
l++;
while(l<vettore_m.length)
tempv[s++]=vettore_m[l++];

vettore_m=tempv;
}
}

}

aiuto..

kingv
26-06-2003, 15:46
Il tipo di cancellazione che vuoi fare (con l'istanziazione di un nuovo array contenente n-1 elementi) e' molto pesante e non esiste imho una maniera efficiente per farlo.

Se il tuo fine no e' un esercizio che ti obbliga a fare in questa maniera prevedi una cancellazione "logica" dell'elemento, mettendo l'iesimo elemento a null e tenendo aggiornati gli opportuni contatori per quanto riguarda la dimensione dell'array, ecc.ecc,

etzocri
26-06-2003, 15:58
non è un'esercizio è solo la prima idea che mi è venuta in mente..
proverò a seguire il tuo consiglio..

lombardp
26-06-2003, 16:03
Tieni conto che gli ARRAY sono strutture dati da utilizzare quando la dimensione dei dati è "costante" o comunque riconducibile a tale caso.

Se hai dei dati che possono variare notevolmente in dimensione, ci sono altre strutture dati più adatte, per esempio le liste concatenate.

Questo per dirti che, come ha sottolineato KINGV, la cancellazione di un elemento dell'array, o la fai in modo logico (tieni traccia della quantità dei dati validi nell'array, che rimane però di dimensioni costanti) o non ha proprio senso farla.

ajez
26-06-2003, 16:29
oppure crei un nuovo array temporaneo senza l'elemento da cancellare e sovrascrivi l'array di partenza con quello temp ;)