将 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&lt;type&gt; 并添加元素并返回list.toArray()。这正是toArrayentryset 上所做的,因为不在桌面前面,所以无法输入代码

【讨论】:

【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

将 HashMap 转换为 ArrayList

如何将复杂的hashmap转换为arrayList

使用jackson将json对象列表转换为hashmap

如何使用 Gson 将 JSON 转换为 HashMap?

将带有List的scala hashmap转换为带有java list的java hashmap

将 HashMap 转换为具有相同排序的 ArrayList [重复]