我正在尝试将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;
}
答案 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()
。这正是toArray
对entryset
所做的事情,因为不能在桌面前面输入代码