2010-08-14 13 views
1

Je dois voir mes clés de hashmap et des valeurs afin de vérifier si elle est im travaillant properly.but obtenir une erreur pour les lignes ci-dessous:comment appeler un itérateur sur un hashmap

Iterator iterator = myHashMap.keySet().iterator(); 
    Flows flows = new Flows(); 
    while(iterator.hasNext()){ 
     Object key = iterator.next(); 
     Object value = myHashMap.get(key); // <-- 
     //here is the error. suspicious call to java.util.Map.get 
     //expected type Flows, actual type object 

     System.out.println(key+" "+value); 
    } 

sont mes clés type de flux et mes valeurs sont FlowsStatics.

+0

Ne pas utiliser les types premières dans le nouveau code: http : //stackoverflow.com/questions/2770321/what-isa-raw-type-and-why-shouldnt-we-use-it – polygenelubricants

+1

"appel suspect" n'est pas une erreur de compilation. C'est parfaitement légitime dans certaines situations (c'est pourquoi c'est seulement "suspect"). Qu'est-ce que vous utilisez qui dit que c'est une erreur? –

Répondre

3

Votre iterator retourne automatiquement les objets de la classe flux si vous déclarez votre Map comme Map<Flows, FlowsStatics>, que vous devriez vraiment:

while(iterator.hasNext()){ 
    Flows key = iterator.next(); 
    FlowsStatics value = myHashMap.get(key); 
+0

Ou catalogué en "Flow" et "FlowStatics" si vous n'avez pas utilisé de génériques. – pavanlimo

+0

oui c'est ma carte: "final HashMap myHashMap = nouveau HashMap ();" –

+0

Vous devez également déclarer l'Iterator avec un paramètre Type pour que votre réponse compile! –

4

Avez-vous déclaré myHashMap en utilisant un type générique: par exemple HashMap < Flows, FlowStatics > ?

Si oui, vous devez utiliser tout au long Génériques:

Iterator<Flows> iterator = myHashMap.keySet().iterator(); 
while(iterator.hasNext()){ 
    Flows key = iterator.next(); 
    FlowStatics value = myHashMap.get(key); // <-- 

ou même:

for(Flows key: myHashMap.keySet().iterator()){ 
    FlowStatics value = myHashMap.get(key); 

ou même:

for(Map.Entry<Flows, FlowStatics> entry: myHashMap.entrySet().iterator()){ 
    Flows key = entry.getKey(); 
    FlowStatics value = entry.getValue();