Преобразование hashmap в stringarray

Я пытаюсь преобразовать hashmap в массив, который я могу поместить в созданный массив строк. Я однако получаю java.lang. Я перевернул мой drinkar.keySet(). ToArray() в String[], но он все равно не будет работать.

public String[] receiveArrayList(){

String[] list = new String[0];

    try {
        ois = new ObjectInputStream(socket.getInputStream());
        drinkar = (HashMap<String, ArrayList<String>>) (ois.readObject());
        System.out.println(drinkar);

        System.out.println(Arrays.toString(drinkar.keySet().toArray()));
        list = (String[]) (drinkar.keySet().toArray());

        for(int i = 0; i < list.length; i++){
            System.out.println(list);
        }


    } catch (ClassNotFoundException ex) {
        System.out.println(ex);
    } catch (IOException ex) {
        System.out.println(ex);
    }
    return list;

}

4 ответа

Решение

drinkar.keySet().toArray() возвращается Object[] не String[]

Одним из способов может быть:

Пользователь Collections.toArray (StringArry)

(или же)

Итерация по keySet и добавьте каждый элемент в массив.

Используйте toArray(T[]) как:

String[] list = drinkar.keySet().toArray(new String[0]);

Дав в качестве аргумента пустой массив, вы сообщаете toArray создать новый массив того же типа для вас, который будет только правильного размера.


Просто примечание: если вы можете выбрать, как правило, удобнее (и безопаснее) работать с такими коллекциями, как ArrayList вместо массивов.

String st[]=hm.keySet(). ToArray(new String[hm.size()]);

Другой вариант - создать ArrayList<type> и добавить элементы и вернуть list.toArray(), Это именно то, что toArray делает на entryset Не могу набрать код, так как не на передней части рабочего стола

Другие вопросы по тегам