我在学校的电脑上玩弄 Java 和哈希图。
我能够即时实例化一个Entry类型String, Integer。然后将其添加到ArrayList的Entrie秒。我将此代码通过电子邮件发送给自己以备后用。
但是在我的家用电脑和笔记本电脑上,它不会让我。相同的确切代码说
该方法
entry(string,int)未定义类型Map
代码是:
Map.Entry<String, Integer> entry = Map.entry(largest, maxCount);
Run Code Online (Sandbox Code Playgroud)
我认为这与Map.Entry作为接口的事实有关?
正如谷歌结果似乎说你必须让自己的Entry班级来做到这一点?但是在较新版本的 Java 中,这种情况发生了变化吗?为什么我之前可以很好地执行此代码?
查找此方法的Javadoc。它说:
自:9
这意味着这个方法是在 Java 9 中添加的。
所以你家里的机器可能没有 Java 9 或更新版本。
在您的 CMD 中运行java -version和javac -version以验证您的版本。然后安装更新的 Java(例如来自AdoptOpenJDK)。
如果您正在寻找无需 Java 9 即可运行的解决方案,您可以使用以下方法:
Map.Entry<String, Integer> entry = new AbstractMap.SimpleEntry<String, Integer>(largest, maxCount);
Run Code Online (Sandbox Code Playgroud)
如此处更详细的解释:Java - How to create new Entry (key, value)
你说:
正如谷歌结果似乎说你必须制作自己的 Entry 课程才能做到这一点?
Java 6 之前的版本也是如此。上述类AbstractMap.SimpleEntry是在 Java 6 中添加的,可以(ab)用于此目的。在此之前,您必须创建自己的实现。
另一种可能更好的选择可能是创建您自己的小类来保存该数据,然后给它一个适当的名称。
例如,与其Map.Entry<String, Integer>让 a 通过他的String name和存储一个人int age,为什么不Person直接创建一个类:
public class Person {
private final String name;
private final int age;
// Constructor and getters, ...
}
Run Code Online (Sandbox Code Playgroud)
更具可读性,更易于维护和扩展。
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |