簡體   English   中英

將Object []從hashmap鍵集轉換為String []?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM