我正在尝试显示以下HashMap的内容:
HashMap<Character,Integer> hm = new HashMap<Character,Integer>();
我使用以下方法打印出内容:
Set hmset = hm.entrySet();
Iterator iterator = hmset.iterator();
while(iterator.hasNext())
{
Character key = new Character(iterator.next());
System.out.println("key : "+key+"value : "+(Integer)hm.get(key));
}
我收到以下错误:
error: constructor Character in class Character cannot be applied to given types;
我也尝试了以下类型转换方式:
Character key = (Character)iterator.next();
但那也行不通。任何帮助非常感谢。 感谢..
答案 0 :(得分:7)
参数化您的Iterator
并使用keySet
:
Iterator<Character> iterator = hm.keySet().iterator();
<强>解释强>
next
转换为所需类型即可调用Object
。 entrySet
将返回Set<Entry<Character, Integer>>
,如果您正在重复密钥,则会使您的生活变得更加复杂答案 1 :(得分:0)
从hm.entrySet()
开始,您试图Set<Character,Integer>
而不是Set<Character>
使用keySet()
会更好。因为它将返回Set<K>
(此处Key为Character。所以将返回Set<Character>
):
Set hmset = hm.keySet();
Iterator<Character> iterator = hmset.iterator();
while(iterator.hasNext())
{
Character key = new Character(iterator.next());
System.out.println("key : "+key+"value : "+(Integer)hm.get(key));
}
答案 2 :(得分:0)
尝试使用此代码
Iterator it = hm.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Character key = (Character)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("key : "+key+"value : "+(Integer)hm.get(key));
}
为什么你在这一行Character key = new Character(iterator.next());
收到错误? 。您正在将int值传递给Character Wrapper Class构造函数。它不允许这样做。
所有包装类都有构造函数,可以通过传递一个String或一个与包装类对应的类型相同的数据类型的变量来创建相应的Wrapper类对象,除了Character包装器无法使用String创建其对象的类。