Конвертировать объект [] из набора hashmap в String []? - программирование
Подтвердить что ты не робот

Конвертировать объект [] из набора hashmap в 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() возвращает объект []. Тем не менее, нельзя ли вводить его в String []? Как вы можете видеть в кодах, позже мне нужно пройти через массив и выполнить некоторые расщепления и другие манипуляции с строками.

Сделав это, я получил сообщение об ошибке:

java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.String[]

Любые рекомендации относительно того, как я должен заниматься этим, очень ценятся. Спасибо!

4b9b3361

Ответ 1

Вы не можете просто передать массив 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);

Ответ 2

Можно использовать keyset для String []. Попробуйте следующее:

String[] keys = map.keySet().toArray(new String[0]);

Ответ 3

Вы можете просто прокручивать через 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 += ";";
    }
}