2

我正在尝试将哈希图转换为数组,我可以将其放入创建的字符串数组中。然而,我得到了 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

4 回答 4

9

使用toArray(T[])作为:

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

通过给一个空数组作为参数,您告诉toArray为您创建一个相同类型的新数组,该数组将具有正确的大小。


请注意:如果您可以选择,使用集合(例如ArrayList而不是数组)通常更方便(也更安全)。

于 2012-08-22T18:38:18.367 回答
4

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

其中一种方法可能是:

用户Collections.toArray(StringArry)

(或者)

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

于 2012-08-22T16:48:04.650 回答
1

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

于 2013-08-24T19:57:59.710 回答
0

另一种选择是创建ArrayList<type>和添加元素并返回list.toArray()toArray这正是entrysetCan not type code since not front of desktop 的作用

于 2012-08-22T18:11:04.277 回答