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];
}
针对此类问题,如果有更好的方法还请大家多提宝贵意见,感谢🙏!
文章讨论了在Java项目中将ArrayList<Map<String,String>>转换为List<String>时遇到的ArrayStoreException,并提出了一个解决方案:使用Object数组存储Map的key和value,然后创建二维String数组进行填充。作者寻求更优的转换方法。
3360

被折叠的 条评论
为什么被折叠?



