Set<String> keys = mappings.keySet();
String[] keyArray = (String[]) keys.toArray();
String hashmapDetails = "";
for(int p=0; p < keyArray.length; p++){
String[] details = keyArray[p].split("/");
hashmapDetails += details[1];
hashmapDetails += mappings.get(keyArray[p]);
if (p != keyArray.length -1){
hashmapDetails += ";";
}
}
原谅我缺乏理解,但我正在尝试探索哈希图的用法。我知道toArray()返回一个Object []。但是,是否无法将其转换为String []?正如您在代码中看到的,稍后,我需要通过一个数组并进行一些拆分和其他字符串操作。
通过这样做我得到一个错误:
java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.String[]
非常感谢任何关于如何解决这个问题的指导。谢谢!
答案 0 :(得分:25)
您不能简单地将Object[]
数组转换为String[]
数组。您应该使用the generic version of toArray
,这应该更好:
String[] keyArray = keys.toArray(new String[keys.size()]);
另请注意,您可以简单地遍历entrySet
(这将保存所有get
次调用)并使用StringBuilder来提高字符串连接效率:
StringBuilder hashmapDetails = new StringBuilder();
for(Map.Entry<String, String> e : mappings.entrySet()) {
String[] details = e.getKey().split("/");
hashmapDetails += details[1];
hashmapDetails += e.getValue();
hashmapDetails += ";";
}
String result = hashmapDetails.substring(0, hashmapDetails.length() - 1);
答案 1 :(得分:7)
可以将键集转换为String []。试试这个:
String[] keys = map.keySet().toArray(new String[0]);
答案 2 :(得分:2)
您可以遍历Set
,我认为toArray
步骤是不必要的。像这样:
Set<String> keys = mappings.keySet();
String hashmapDetails = "";
for(String key : keys){
String[] details = key.split("/");
hashmapDetails += details[1];
hashmapDetails += mappings.get(key);
if (p != keys.size() -1){
hashmapDetails += ";";
}
}