gpt4 book ai didi

java - 整型对象类型转换

转载 作者:行者123 更新时间:2023-12-01 20:00:07 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com