将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>) (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; } 

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

其中一种方式可能是:

user 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()]);

另一个选项是create ArrayList并添加元素并返回list.toArray() 。 这正是entrysetentrysetentryset因为不是桌面前面所以不能输入代码