You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HashMap的值转换为数组?类型转换报错求助

问题原因及解决方法

你这段代码报错的核心原因是:HashMap.values().toArray()的无参方法返回的是Object[]类型的数组,Java中无法直接将Object数组强制转换为具体类型(比如Car)的数组——因为数组的实际运行时类型是Object[],强转时会触发类型转换异常。

正确写法有两种:

  1. 传入指定类型的空数组:
Car[] carArray = cars.values().toArray(new Car[0]);
  1. 传入与元素数量匹配的数组:
Car[] carArray = cars.values().toArray(new Car[cars.size()]);

补充说明

第二种写法中,如果传入的数组长度等于集合元素数量,会直接复用该数组;如果长度不足,内部会自动创建新数组。而传入长度为0的数组(第一种写法)在Java 9及以上版本会被优化,性能和第二种几乎无差异,写法更简洁。

内容的提问来源于stack exchange,提问作者WDUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:07:33