我有一个代码无法按我希望的方式工作..我正在将 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/