将 hashmap 转换为 stringarray
Posted
技术标签:
【中文标题】将 hashmap 转换为 stringarray【英文标题】:converting hashmap to stringarray 【发布时间】:2012-08-18 03:37:10 【问题描述】:我正在尝试将哈希图转换为数组,我可以将其放入创建的字符串数组中。然而,我得到了 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;
【问题讨论】:
【参考方案1】:drinkar.keySet().toArray()
返回 Object[]
而不是 String[]
其中一种方式可能是:
用户Collections.toArray(StringArry)
(或)
遍历keySet
并将每个元素添加到数组中。
【讨论】:
谢谢,但我似乎做错了。我不认为我知道如何正确迭代。 while(it.hasNext()) String temp = it.next(); //然后将 temp 添加到 String 数组。 有没有办法将字符串添加到数组中?好像没有 arr[0]=temp;这将在索引 0 处添加 temp 它没有用,我仍然一无所获。但我尝试了另一种方式。创建了一个数组列表,将临时添加到数组列表中,它可以工作,我可以轻松打印它。但是当我尝试将它转换为数组时,它给了我 java.lang.【参考方案2】:另一个选项是创建ArrayList<type>
并添加元素并返回list.toArray()
。这正是toArray
在entryset
上所做的,因为不在桌面前面,所以无法输入代码
【讨论】:
【参考方案3】:将toArray(T[]) 用作:
String[] list = drinkar.keySet().toArray(new String[0]);
通过提供一个空数组作为参数,您告诉toArray
为您创建一个相同类型的新数组,该数组将具有正确的大小。
请注意:如果可以选择,使用 ArrayList
等集合而不是数组通常更方便(也更安全)。
【讨论】:
【参考方案4】:String st[]=hm.keySet().toArray(new String[hm.size()]);
【讨论】:
以上是关于将 hashmap 转换为 stringarray的主要内容,如果未能解决你的问题,请参考以下文章