我需要将 HashMap 转换为 String 数组,下面是我的 java 代码
import java.util.HashMap;
import java.util.Map;
public class demo {
public static void main(String[] args) {
Map<String, String> map1 = new HashMap<String, String>();
map1.put("1", "1");
map1.put("2", "2");
map1.put("3", "3");
String[] str = (String[]) map1.keySet().toArray();
for(int i=0; i<str.length;i++) {
System.out.println(str[i]);
}
}
}
当我运行代码时,我得到以下 ClassCastException
。
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at demo.main(demo.java:17)
原文由 JackSun 发布,翻译遵循 CC BY-SA 4.0 许可协议
toArray()
返回一个Object[]
,无论泛型如何。您可以改用重载变体:或者,由于
Set
的toArray
方法不能保证顺序,并且您使用数组的目的只是打印出值,您可以迭代keySet()
直接:编辑:只是为了完成图片,在 Java 8 中,可以使用
foreach
方法使代码更优雅: