【发布时间】:2015-04-13 23:13:09
【问题描述】:
我是 Java 新手,在 Mac 上使用 HashMap 编写 Java。
但是我遇到了一个我找不到答案的问题
import java.util.Map;
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
Map<String, Integer> hm = new HashMap<>();
hm.put("a", 1);
hm.put("b", 2);
for (Entry<String, Integer> en : hm.entrySet()) { //this line is different
System.out.print(en.getKey());
System.out.println(en.getValue());
}
}
}
此代码在 Windows 机器上运行良好,但在我的 Mac 上它会弹出一个错误提示“找不到符号:条目”
后来我把代码改成了
import java.util.Map;
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
Map<String, Integer> hm = new HashMap<>();
hm.put("a", 1);
hm.put("b", 2);
for (Map.Entry<String, Integer> en : hm.entrySet()) { //this line is different
System.out.print(en.getKey());
System.out.println(en.getValue());
}
}
}
现在它可以正常工作了。
谁能告诉我为什么?
为什么这段代码在其他计算机上运行良好,而在我的计算机上却不行?
【问题讨论】:
-
因为你没有导入
Entry。 -
在第二组代码中,您实际上是在告诉编译器迭代是针对 'java.util.Map.Entry
' 第一个条目未指定。您是在 IDE 中执行此操作吗?如果您还导入了'java.util.Map.Entry' ,第一个可能会起作用 -
@immibis Entry是接口Map的内部类,不需要导入。
-
@hiren 你可以导入
Entry,也可以导入Map写Map.Entry,或者你也可以不导入写java.util.Map.Entry -
@hiren Entry 是一个内部接口,它们是自动静态的 - 所以你必须导入它们。
标签: java dictionary hashmap iteration