遍历包含 Entry 对象的 Set
Looping through Set containing Entry objects
import java.util.*;
public class HelloWorld{
public static void main(String []args){
HashMap<Integer,String> h = new HashMap<Integer,String>();
h.put(100,"Hola");
h.put(101,"Hello");
h.put(102,"light");
System.out.println(h); // {100=Hola, 101=Hello, 102=light}
Set s = h.entrySet();
System.out.println(s); // [100=Hola, 101=Hello, 102=light]
for(Map.Entry<Integer,String> ent : s)
{
System.out.println("Key=" + ent.getKey() + " Value=" + ent.getValue());
}
}
}
编译错误
HelloWorld.java:13: error: incompatible types: Object cannot be converted to Entry<Integer,String>
for(Map.Entry<Integer,String> ent : s)
^
我正在尝试为 Set 中的每个条目类型对象打印键值对。但它给出了上面显示的编译时错误。但是如果我将 "s" 替换为“h.entrySet()”并且循环正常,代码工作正常。使用引用保存 "h.entrySet()" 如何导致编译错误?
行
Set s = h.entrySet();
应该是
Set<Map.Entry<Integer,String>> s = h.entrySet();
因为下面的每个循环都不知道 Set 是什么类型?
此代码有效:
import java.util.*;
public class HelloWorld{
public static void main(String []args){
HashMap<Integer,String> h = new HashMap<Integer,String>();
h.put(100,"Hola");
h.put(101,"Hello");
h.put(102,"light");
System.out.println(h); // {100=Hola, 101=Hello, 102=light}
Set<Map.Entry<Integer,String>> s = h.entrySet();
System.out.println(s); // [100=Hola, 101=Hello, 102=light]
for(Map.Entry<Integer,String> ent : s)
{
System.out.println("Key=" + ent.getKey() + " Value=" + ent.getValue());
}
}
}
每当你看到
incompatible types: Object cannot be converted to.. error
这意味着 JVM 正在尝试将 Object 类型转换为其他类型,这会导致编译错误。这是在 for 循环中发生的。
import java.util.*;
public class HelloWorld{
public static void main(String []args){
HashMap<Integer,String> h = new HashMap<Integer,String>();
h.put(100,"Hola");
h.put(101,"Hello");
h.put(102,"light");
System.out.println(h); // {100=Hola, 101=Hello, 102=light}
Set s = h.entrySet();
System.out.println(s); // [100=Hola, 101=Hello, 102=light]
for(Map.Entry<Integer,String> ent : s)
{
System.out.println("Key=" + ent.getKey() + " Value=" + ent.getValue());
}
}
}
编译错误
HelloWorld.java:13: error: incompatible types: Object cannot be converted to Entry<Integer,String>
for(Map.Entry<Integer,String> ent : s)
^
我正在尝试为 Set 中的每个条目类型对象打印键值对。但它给出了上面显示的编译时错误。但是如果我将 "s" 替换为“h.entrySet()”并且循环正常,代码工作正常。使用引用保存 "h.entrySet()" 如何导致编译错误?
行
Set s = h.entrySet();
应该是
Set<Map.Entry<Integer,String>> s = h.entrySet();
因为下面的每个循环都不知道 Set 是什么类型?
此代码有效:
import java.util.*;
public class HelloWorld{
public static void main(String []args){
HashMap<Integer,String> h = new HashMap<Integer,String>();
h.put(100,"Hola");
h.put(101,"Hello");
h.put(102,"light");
System.out.println(h); // {100=Hola, 101=Hello, 102=light}
Set<Map.Entry<Integer,String>> s = h.entrySet();
System.out.println(s); // [100=Hola, 101=Hello, 102=light]
for(Map.Entry<Integer,String> ent : s)
{
System.out.println("Key=" + ent.getKey() + " Value=" + ent.getValue());
}
}
}
每当你看到
incompatible types: Object cannot be converted to.. error
这意味着 JVM 正在尝试将 Object 类型转换为其他类型,这会导致编译错误。这是在 for 循环中发生的。