如何将HashMap的值转换为数组?类型转换报错求助
问题原因及解决方法
你这段代码报错的核心原因是:HashMap.values().toArray()的无参方法返回的是Object[]类型的数组,Java中无法直接将Object数组强制转换为具体类型(比如Car)的数组——因为数组的实际运行时类型是Object[],强转时会触发类型转换异常。
正确写法有两种:
- 传入指定类型的空数组:
Car[] carArray = cars.values().toArray(new Car[0]);
- 传入与元素数量匹配的数组:
Car[] carArray = cars.values().toArray(new Car[cars.size()]);
补充说明
第二种写法中,如果传入的数组长度等于集合元素数量,会直接复用该数组;如果长度不足,内部会自动创建新数组。而传入长度为0的数组(第一种写法)在Java 9及以上版本会被优化,性能和第二种几乎无差异,写法更简洁。
内容的提问来源于stack exchange,提问作者WDUK
相关产品推荐
相关产品推荐

