如何将哈希图转换为数组?

Posted

技术标签:

【中文标题】如何将哈希图转换为数组?【英文标题】:How I can convert the hashmap to array? 【发布时间】:2017-06-20 10:06:13 【问题描述】:

我想把 hashmap 放到数组中

我创建哈希图

Map<Integer,File> selectedFiles = new Hashmap<>();

然后放一些地图数据

我将这个 hashmap 的值转换为数组,所以

File[] files = (File[]) selectedFiles.values().toArray();

但是会出现错误;

java.lang.Object[] cannot be cast to java.io.File[]

我知道当我想将 hashmap 的值排列成数组时,使用 .values.toArray() 但可能不正确;

这种方式不对吗?

【问题讨论】:

The easiest way to transform collection to array?的可能重复 除非你有其他原因,android 的建议是使用SparseArray<File> 而不是 Map:更少的装箱,更低的内存使用。 Java: how to convert HashMap<String, Object> to array的可能重复 【参考方案1】:
Map<Integer, File> selectedFiles = new HashMap<>();
    selectedFiles.put(1, null);

    File[] files = selectedFiles.values().toArray(
            new File[selectedFiles.size()]);

    System.out.println(files);// We will get the object [Ljava.io.File;@15db9742

数组。不带参数的 toArray 会创建一个对象数组,因为在运行时会丢失列表的类型信息。

【讨论】:

感谢您节省了我的时间【参考方案2】:

请使用以下代码将 HashMap 转换为 Array ,您可以根据自己的情况将 String 更改为 File。

   //Creating a HashMap object

    HashMap<String, String> map = new HashMap<String, String>();

    //Getting Collection of values from HashMap

    Collection<String> values = map.values();

    //Creating an ArrayList of values

    ArrayList<String> listOfValues = new ArrayList<String>(values);

   // Convert ArrayList to Array

   String stringArray[]=listOfValues.toArray(new String[listOfValues.size()])

【讨论】:

你可以跳过中间的ArrayList。另外,为什么不直接使用File @4castle 是的,你是对的,我只是放了示例代码来做到这一点,这就是使用 String 的原因。

以上是关于如何将哈希图转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章

将哈希图转换为数组[重复]

(Kotlin)如何将哈希图输出保存到文件中

如何使用意图将哈希图值发送到另一个活动

将 hashmap 转换为 stringarray

struts2 和 dojo 网格

将 js 数组转换为字典/哈希图