Ich versuche, den folgenden Code zu kompilieren:Wie verwende ich eine foreach-Schleife in Java, um die Werte in einer HashMap zu durchlaufen?
private String dataToString(){
Map data = (HashMap<MyClass.Key, String>) getData();
String toString = "";
for(MyClass.Key key: data.keySet()){
toString += key.toString() + ": " + data.get(key);
return toString;
}
Ich erhalte eine Fehlermeldung in dem für Zeile, die sagt:
incompatible types found : java.lang.Object required: MyClass.Key
Die getData()
Methode gibt ein Object
(aber in diesem Fall ist die Object
zurück hat die HashMap
Struktur). MyClass.Key
ist eine Enumeration, die ich für die Zwecke meiner Anwendung erstellt habe (in einer anderen Klassendatei - MyClass
).
Wenn ich eine foreach-Schleife mit der gleichen Struktur in MyClass.java
erstellt habe, trat dieses Problem nicht auf.
Was mache ich falsch?
Sie müssen getData() nicht auf eine HashMap anwenden, wenn Sie sie nur einer Map zuweisen. Ziehe es lieber auf eine Karte. Was, wenn getData() eine non-HashMap (wie eine TreeMap) zurückgibt? –
Ich habe hier einige Informationen weggelassen ... getData() ist eigentlich getData (String key), wobei key das gewünschte Objekt angibt, das ich bekommen möchte. Da ich das Objekt, das ich bekomme, kenne, weiß ich genau, worauf ich es anwenden sollte. – troyal