java - 整型对象类型转换

标签 java hashmap

我有一个代码无法按我希望的方式工作..我正在将 HashMap 转换为整数数组..但它显示错误:Object[] Integer[] 类型不匹配.. 代码如下:

HashMap<String,Integer> hm = new HashMap<String,Integer>(); 
hm.put((s.charAt(i) + "") , (hm.get(s.charAt(i)+""))+1); // i is for loop
ArrayList<Integer> alist = new ArrayList<Integer>(hm.values());
Integer[] i = alist.toArray(); // error at this line

我必须使用 for 循环从 ArrayList 创建一个整数数组..

for(int k=0;k<alist.length;k++)
{
 i[k] = (Integer) alist[k];
}

我对照 alist.get(o) instanceof Integer 检查了它,它返回 true 表明它是一个 Integer 对象..但它仍然在代码的第 4 行显示错误..

提前致谢。

最佳答案

List.toArray() 已重载:

您使用的是哪一个:

Object[] toArray();

和:

T[] toArray(T[] a);

使用最后一个,因为您希望将 List 转换为 List 泛型类型的数组,而不是 Object 数组>.

Integer[] i = alist.toArray(new Integer[alist.size()]); 
<小时/>

顺便说一句,您可以通过接口(interface)编程、使用菱形运算符并保​​留不需要的对象来改进代码。
请注意,toArray() 来自 Collection 接口(interface)和 AbstractCollection,它是大多数具体 Collection 的基类子类定义了 toArray() 的实现。

所以你可以写:

Map<String,Integer> hm = new HashMap<>();  
hm.put((s.charAt(i) + "") , (hm.get(s.charAt(i)+""))+1); // i is for loop
Integer[] i = hm.values().toArray(new Integer[hm.values().size()]);

关于java - 整型对象类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48289699/

相关文章:

java - JPA 2.1 实体图的子图生成空连接

Java Swing GUI 未显示使用多个类

java - 如何从Java 7中的.txt文件提取主机名和主机请求的出现?

java - 为什么 Java HashMap 在调试 View 中包含空值

java - 当哈希表生成巨大的哈希码时会发生什么?

java - 将字符串存储到包含出现次数的哈希表中

java - Blackberry 的数据库选项

java - 我需要将以下情况视为关键情况吗?

java - 如何调试/查看 ObjectInputStream 数据?

java - 使用 lambda 表达式创建嵌套 hashmap