如何在Java中使用foreach循环遍历HashMap中的值?
问题内容:
我正在尝试编译以下代码:
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;
}
我在for行中看到一条错误消息:
不兼容的类型
找到:java.lang.Object
必需:MyClass.Key
该getData()
方法返回一个Object
(但在这种情况下,Object
返回的HashMap
结构)。
MyClass.Key
是我为应用程序创建的枚举(在另一个类文件-中MyClass
)。
当我在中创建具有相同结构的foreach循环时MyClass.java
,我没有遇到此问题。
我究竟做错了什么?
问题答案:
一种更有效的方法:
Map<MyClass.Key, String> data = (HashMap<MyClass.Key, String>) getData();
StringBuffer sb = new StringBuffer();
for (Map.Entry<MyClass.Key,String> entry : data.entrySet()) {
sb.append(entry.getKey());
sb.append(": ");
sb.append(entry.getValue());
}
return sb.toString();
如果有可能,请定义“ getData”,以便您不需要强制转换。