ArrayList dispettosi...

di il
3 risposte

ArrayList dispettosi...

Salve a tutti!
Il mio problema è che durante un ciclo for aggiungo 27 elementi in un ArrayList tramite la funzione add e noto che appena effettuato il 10 inserimento la cpu modifica da sola i primi elementi inseriti nell'arraylist cambiandone a piacimento i valori, e ad altri invece elimina dei campi!! Tutto questo l'ho notato (oltre all'output incorretto) con il debug...Ah uso Eclipse 3.1 e JSDK 5.0...Tengo a sottolineare che il programma si comporta a dovere se inserisco meno di 10 elementi, ma se aumento di uno allora ecco che arriva l'inferno... questo è il codice in questione...


private ArrayList elimina_unit_prod(ArrayList coppie, ArrayList prod, ArrayList non_terminali)
{
ArrayList result = new ArrayList();

for(int i = 0; i < coppie.size(); i++)
{
Coppia c = (Coppia) coppie.get(i);
String a = c.get_a();
String b = c.get_b();

for(int j = 0; j < prod.size(); j ++)
{
Produzione p = (Produzione) prod.get(j);
String testa = p.get_testa();
String corpo = p.get_corpo();
if(testa.equals(b) && appartiene_tutto_a(corpo, non_terminali) && corpo.length() == 1)
{
System.out.println("La produzione "+testa+"->"+corpo+" non viene inserita nel nuovo insieme" +
" di produzioni perché è una unit-production.");
}
else
{
if(testa.equals(b))
{
p.set_testa(a);
System.out.println("La produzione "+a+"->"+corpo+" viene inserita nel nuovo insieme" +
" di produzioni.");
result.add(p);
}
}
}
}

return result;
}

Scritto da: Njk00 on 12/09/2006 17:26:11

3 Risposte

  • Re: ArrayList dispettosi...

    Ciao.. sai.. è molto strana questa cosa.. cmq possiamo provare a risolvere il problema.. una cosa che ho notato è la mancata definizione del tuo arraylist.. ad es. l'arraylist coppie dato come parametro in input di che tipo è?.. dal codice che hai scritto sembra essere di tipo coppia.. no?.. quindi lo puoi dichiarare come ArrayList<coppia> coppie.. e così ti puoi evitare tutti i fastidiosi cast successivi.. stesso discorso vale per l'arraylist result.. è sempre conveniente specificare di che tipo sono i tuoi array.. magari questo risolve anke il tuo problema.. fammi sapere..
    Saluti

    Intel
  • Re: ArrayList dispettosi...

    Innanzitutto grazie per la risposta...Poi si il primo è di tipo coppia... Mmm se ho ben capito è possibile dichiarare un arraylist di un tipo scpecifico? e la sintassi è così: ArrayList a <Coppia> = new ArrayList();? Quindi facendo così oltra ad evitare i cast cosa ci si guadagna?

    Grazie per il tempo e l'attenzione concessomi...

    P.S. scusami per la mia ignoranza in materia ma ad ing inf di programmazione seria se ne fa poca...
  • Re: ArrayList dispettosi...

    Ciao.. dalla java 1.4 in poi gli arraylist si possono riferire a dati di tipo primitivo o anche classi create da te.. per dichiararle si usa questa sintassi:

    ArrayList a <Coppia> = new ArrayList<Coppia>();

    in questo modo il tuo arraylist è di tipo coppia.. nn so se ci guadagni qualcos'altro rispetto al cast.. ma senzadubbio è un notevole vantaggio.. il cast conviene utilizzarlo in situazioni dove proprio nn se ne può fare a meno.. e soprattutto un array definito in questo modo è più comodo utilizzarlo..
    tuttavia nn so se il tuo problema deriva da questo fatto.. fammi sapere se hai risolto..
    Saluti..

    Intel
Devi accedere o registrarti per scrivere nel forum
3 risposte