Java项目中想把 ArrayList 转存为 List
结果报了错误java.lang.ArrayStoreException,具体报错信息如下:
- 报错代码所在行:
ArrayList<Map<String, String>> historyList = new ArrayList<>();
str = historyList.toArray(new String[0]);
- 查看toArray接口
说明如果运行时指定数组的类型不是列表中每个元素的运行时的超级类型,那么就会抛出这个异常。
- 修改代码
由于我的 ArrayList 里存储的是 Map<key,value> 形式的键值对数据,那么最简单的方法是创建Object类型数组去分别存储key和value数据,再创建一个二维数组str[][] ,然后通过强转String以及循环遍历key[] 和 value[]
的方式
去向数组str[][] 填充元素。
ArrayList<Map<String, String>> historyList = new ArrayList<>();
historyList.add(historyMap);
Object[] keys = historyMap.keySet().toArray();
Object[] values = historyMap.values().toArray();
str = new String[keys.length][values.length];
for(int i=0; i<keys.length; i++) {
str[0][i] = (String)keys[i];
str[1][i] = (String)values[i];
}
针对此类问题,如果有更好的方法还请大家多提宝贵意见,感谢🙏!