gpt4 book ai didi

Java HashMap 迭代 Map.Entry<> 与 Entry<>

转载 作者:行者123 更新时间:2023-12-01 11:55:24 25 4
gpt4 key购买 nike

我是 Java 新手,正在使用 HashMap 在 Mac 上编写 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 上它会弹出一个错误,指示“找不到符号:Entry”

后来我将代码更改为

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());
}
}
}

现在一切正常了。

谁能告诉我为什么?
为什么这段代码在其他计算机上运行良好,但在我的计算机上运行不佳?

最佳答案

您提供的代码也无法在 Windows 上编译。不确定您可能正在编译其他东西。如果您使用控制台并尝试编译并且具有相似的文件名,则可能会发生这种情况。

Map.Entry 位于 java.util.Map 包中。所以,我的建议是

1. 您可以在代码中导入java.util.Map.Entry

2. 使用 Map.Entry 而不仅仅是 Entry,例如:

for (Map.Entry<String, Integer> en : hm.entrySet())

基本上,当您使用 Map.Entry 时,您是直接引用该类。Java 的 import 语句是纯粹的语法糖。 import 仅在编译时进行评估,以指示编译器在代码中的何处查找名称。

当您始终指定类的完整限定名称时,您可能不需要任何导入语句。就像这一行根本不需要 import 语句:

javax.swing.JButton but = new  javax.swing.JButton();

导入语句将使您的代码更具可读性,如下所示:

import javax.swing.*
JButton but = new JButton();

希望这有帮助。

关于Java HashMap 迭代 Map.Entry<> 与 Entry<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490663/

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