将hashmap转换为字符串数组

时间:2012-08-22 16:47:27

标签: java mysql hashmap arrays keyset

我正在尝试将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 个答案:

答案 0 :(得分:9)

使用toArray(T[])

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

通过给出一个空数组作为参数,你告诉toArray为你创建一个大小正确的新数组。


请注意:如果您可以选择,使用ArrayList等集合代替数组通常会更方便(也更安全)。

答案 1 :(得分:3)

drinkar.keySet().toArray()返回Object[]而不是String[]

其中一种方式可能是:

用户Collections.toArray(StringArry)

(或)

遍历keySet并将每个元素添加到数组中。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

另一个选项是创建ArrayList<type>并添加元素并返回list.toArray()。这正是toArrayentryset所做的事情,因为不能在桌面前面输入代码