![](/img/trans.png)
[英]In the HashMap of Java, will removing an element from keySet affect the hashmap object?
[英]convert Object[] from a hashmap keyset to String[]?
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[]
我非常感謝任何關於如何解決這個問題的指導。 謝謝!
您不能簡單地將Object[]
數組轉換為String[]
數組。 您應該使用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);
可以將鍵集轉換為String []。 試試這個:
String[] keys = map.keySet().toArray(new String[0]);
你可以只迭代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 += ";";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.