Newsgroup: it.comp.java
Titolo: problema hashmap

HashMap<String, Integer> [ ] hmm;
hmm = new HashMap<String, Integer> [20];
ho risolto usando un ArrayList,
MA non capisco perchè il codice sopra non funzioni
c'è qualcosa di male a fare un array di HashMap?  :-P
Ciao
Chairam


per intenderci ho fatto così:
	ArrayList <HashMap> al;
	al = new ArrayList<HashMap>(a.length());
il dubbio permane @:-=
Ciao
Chairam

chairam ha scritto:

Che errore ti da?

Che errore ti da?
consifderato il seguente codice:
0	import java.util.HashMap;
1	
2	public class hashProblem {
3		HashMap<String, Integer> [] hmm ;
4		hmm = new HashMap<String, Integer> [20];
5	}
Eclipse si blocca alla riga 3 con un simpatico:
Syntax Error on token ";".. expeted
alquanto criptico imho
javac č piů amichevole:
hashProblem.java:5: <identifier> expected
        hmm = new HashMap<String, Integer> [20];
            ^
1 error
il segno ^ va sotto l'uguale
Ciao
Chairam

 Chairam
è ovvio che ti da errore!!!!
Ma Java lo conosci almeno?
Stai eseguendo delle istruzioni all'interno della classe, e non puoi!
Puoi eseguire istruzioni solo all'interno di metodi!!! (o di blocchi {}
o static {})
Prova con:
import java.util.HashMap;
public class hashProblem {
	HashMap<String, Integer> [] hmm = new HashMap<String, Integer> [20];
}
Questo è corretto, anche se probabilmente non ti compilerà in quanto la
creazione di array generici non dovrebbe essere fatta.

creazione di array generici non dovrebbe essere fatta.
perchè?
il problema è legato all'uso di: <String, Integer>
quello che non so è se non si può fare (per quale motivo)
o se sbaglio sintassi
Ciao
Chairam

chairam ha scritto:

No, semplicemente non si può creare un array di tipi generici perché non
puoi assicurare che ogni locazione dell'array contenga lo stesso tipo,
cioè potresti avere:
HashMap[] m = new HashMap[20];
m[0] = new HashMap<String, Integer>();
m[1] = new HashMap<Double, Integer>();
m[2] = new HashMap<Date, String>();
e nessuno te lo vieta.
non puoi definire un array generico perché l'array può contenere tipi
generici diversi

generici diversi
mhh non mi convinci fino infondo se dichiaro m così:
HashMap<String, Integer> [] m;
resta valido solo m[0] nel tuo esempio, gli atri bloccati a compile
time e il problema che dici tu scompare.
Quello che non capisco è perché  il compilatore accetta:
 HashMap<String, Integer>[] hmm;
e poi non me lo fa istanziare
è questo che non mi torna!!
Ciao
Chairam

 
Allora.. i generici esistono solo a compile time, non a run-time, quello
che vuoi fare tu lo puoi fare così:
HashMap<String, Integer>[] hmn = new HashMap[20];
così dichiari la tua variabile di tipo string,integer e quindi puoi
aggiungere solo oggetti string,integer, ma non ti serve metterlo nel
costruttore.
Dal compilatore Java:
you can't create a generic type of array. (errore che appare quando cerchi
di farlo)
In questo modo abbiamo risolto il tuo problema, sul perché non puoi
farlo... non sono il massimo esperto.. ti conviene guardare su qualche
manuale.
La mia opinione te l'ho data.
Resta fuori dubbio che creare un'array generico ti da un errore, facendo
come ho suggerito io no.
-- 
Pietro
(\_/)  <- This is Bunny.
(°_°)     Copy Bunny into your signature to help
(> <)     him on his way to world domination.

Grazie
Ciao
Chariam