PDA

View Full Version : [JAVA] Array di ArrayList senza warning


wingman87
24-02-2008, 23:50
Ciao a tutti. Vorrei creare un array di ArrayList ma non ci riesco senza generare warning.
Sia chiaro che non voglio disattivare i warning.
Questo č il codice che ho scritto:
private void loadMiniDizionari(){
ArrayList miniDiz[]=new ArrayList[30];
for(int i=0;i<30;i++)
miniDiz[i]=new ArrayList<String>();
for(int i=0;i<dizionario.length;i++)
miniDiz[dizionario[i].length()].add(dizionario[i]);
miniDizionari=new String[30][];
for(int i=0;i<30;i++)
miniDizionari[i]=(String[])miniDiz[i].toArray(new String[0]);
}
Il compilatore mi da i warning sulle righe evidenziate, ecco i messaggi:

warning: [unchecked] unchecked call to add(E) as a member o
f the raw type java.util.ArrayList
miniDiz[dizionario[i].length()].add(dizionario[i]);
^
warning: [unchecked] unchecked call to <T>toArray(T[]) as a
member of the raw type java.util.ArrayList
miniDizionari[i]=(String[])miniDiz[i].toArray(new String
[0]);
^
2 warnings

Ho provato a scrivere la dichiarazione del vettore in mille modi ma cambia solo la posizione del warning, non riesco ad eliminarlo. Potete darmi una mano? Grazie!

nuovoUtente86
25-02-2008, 01:00
dichiara l' arrayList utilizzando i generici introdotti nella java 5

ArrayList<qualcosa>

wingman87
25-02-2008, 09:25
dichiara l' arrayList utilizzando i generici introdotti nella java 5

ArrayList<qualcosa>

In questo caso non funziona perche' e' un array di ArrayList (prova anche tu), come vedi i minidiz[i] sono inizializzati correttamente.

vladix
25-02-2008, 10:21
prova a sostituire l'array di arraylist con


ArrayList<ArrayList<String>> miniDiz = new ArrayList<ArrayList<String>>();


che poi sarebbe anche meglio xche cosi la larghezza del array e dinamica

wingman87
25-02-2008, 16:49
Funziona!!! Grazie!!!
Ecco il codice completo, nel caso serva a qualcuno:
private void loadMiniDizionari(){
ArrayList<ArrayList<String>> miniDiz=new ArrayList<ArrayList<String>>();
for(int i=0;i<30;i++)
miniDiz.add(new ArrayList<String>());
for(int i=0;i<dizionario.length;i++)
miniDiz.get(dizionario[i].length()).add(dizionario[i]);
miniDizionari=new String[30][];
for(int i=0;i<30;i++)
miniDizionari[i]=(String[])miniDiz.get(i).toArray(new String[0]);
}

nuovoUtente86
25-02-2008, 23:29
In questo caso non funziona perche' e' un array di ArrayList (prova anche tu), come vedi i minidiz[i] sono inizializzati correttamente.

Avevi provato ad utilizzare i generici anche nella dichiarazione oltre che nell' inizializzazione?

wingman87
25-02-2008, 23:54
Sėsė, ma non avevo provato come mi ha suggerito vladix. Credo sia l'unica soluzione, avevo provato a mettere ovunque quel maledetto <String>