Java 如何从非';t型物体?
这不起作用,因为它.next()返回对象。我的hashmap使用int作为键。我的所有方法都接受int来访问hashmap。在循环使用键时,如何实际获取int值,以便将其传递给其他方法?首先,在定义Java 如何从非';t型物体?,java,key,hashmap,Java,Key,Hashmap,这不起作用,因为它.next()返回对象。我的hashmap使用int作为键。我的所有方法都接受int来访问hashmap。在循环使用键时,如何实际获取int值,以便将其传递给其他方法?首先,在定义映射时尝试使用泛型。那你就不用担心了 第二件事,HashMap不使用基元类型作为键。这意味着您弄错了,用作键的实际类型是Integer,而不是int 快速修复可以转换为int,如下所示 Iterator it = myHashMap.keySet().iterator(); while (it.has
映射时尝试使用泛型。那你就不用担心了
第二件事,HashMap不使用基元类型作为键。这意味着您弄错了,用作键的实际类型是Integer
,而不是int
快速修复可以转换为int
,如下所示
Iterator it = myHashMap.keySet().iterator();
while (it.hasNext()) {
int next = it.next();
}
一个详细的示例,带有一个新的循环语法(在Java5中引入)
Map Map=newhashmap();
...
for(int n:map.keySet()){
...
}
您应该使用Java泛型:
Map<Integer, String> map = new HashMap<Integer, String>();
...
for(int n : map.keySet()) {
...
}
Map myHashMap=newhashmap();
// ...
for(int键:myHashMap.keySet()){
// ...
}
Java中的HashMaps只能使用对象,不能使用原语
因此,键更可能是Integer类型的,并且当您将内容放入时,它会从int提升到Integer
尽管如此,这确实是一个古老的爪哇。您的集合应该使用泛型定义键和目标类型,Java中也有for-each
for(整数键:myHashMap.keySet())
顺便说一句:请注意,对于迭代的顺序没有任何保证。当您将int
s用作Map
s中的键时,它们是Integer
s
任何Java程序员都知道,不能将int(或其他原语值)放入集合中。集合只能保存对象引用,因此必须将基元值装箱到适当的包装器类中(在int的情况下是整数)。当您将对象从集合中取出时,您将得到输入的整数;如果需要int,则必须使用intValue方法取消对整数的装箱。所有这些装箱和拆箱都是一件痛苦的事情,会把代码弄得乱七八糟。自动装箱和拆箱功能使过程自动化,消除了痛苦和混乱
你应该使用泛型
Map<Integer, Object> myHashMap = new HashMap<Integer, Object>();
// ...
for (int key : myHashMap.keySet()) {
// ...
}
如果你想按升序排列你的密钥,考虑使用<代码> TeMeMAP < /C> >而不是<代码> HashMap < /C> >
< p>我不确定你的密钥数组是否是你所需要的,但是我通常通过这样的映射循环:
for (int key : myHashMap.keySet()){
}
Map Map=newhashmap();
对于(Map.Entry:Map.entrySet()){
System.out.println(“Key:+entry.getKey());
System.out.println(“Value:+entry.getValue());
}
答案很简单:使用通用迭代器,如下所示
迭代器it=myHashMap.keySet().Iterator();虽然
(it.hasNext()){int next=it.next();}
实际上,转换为int不起作用。它说不能从object强制转换为int。我也不能使用Integer.intValue()。我不知道它给了我什么样的东西\注意:上面的快速修复只适用于Java5或更高版本。对于lesser,您需要((Integer)it.next()).intValue()
@Joren,刚刚完成实现,并收到您的评论。谢谢,修好了,谢谢。这(以及下面所有类似的回复)正是我所需要的。
Map<Integer, Object> myHashMap;
for (int key : myHashMap.keySet()){
}
Map<Integer, Object> map = new HashMap<Integer, Object>();
for(Map.Entry<Integer, Object> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey());
System.out.println("Value: " + entry.getValue());
}