繁体   English   中英

Map.entry(...) 对于类型 Map 未定义

[英]Map.entry(...) is undefined for type Map

我在学校的电脑上玩弄 Java 和哈希图。

我能够即时实例化一个String, Integer类型的Entry 然后将其添加到EntrieArrayList中。 我将此代码通过电子邮件发送给自己以备后用。

但是在我的家用电脑和笔记本电脑上,它不会让我。 相同的确切代码说

未定义Map类型的方法entry(string,int)

代码是:

Map.Entry<String, Integer> entry = Map.entry(largest, maxCount);

我认为这与Map.Entry是一个接口有关?

正如谷歌结果似乎说你必须制作自己的Entry课程才能做到这一点? 但是在较新版本的 Java 中,这种情况发生了变化吗? 为什么我之前可以很好地执行此代码?

解释

查找此方法的Javadoc 它说:

自:9

这意味着这个方法是在 Java 9 中添加的。

所以你家里的机器可能没有 Java 9 或更新版本。


升级

在 CMD 中运行java -versionjavac -version以验证您的版本。 然后安装更新的 Java(例如来自AdoptOpenJDK )。


前 Java 9

如果您正在寻找无需 Java 9 即可运行的解决方案,您可以使用以下方法:

Map.Entry<String, Integer> entry = new AbstractMap.SimpleEntry<String, Integer>(largest, maxCount);

如此处更详细的解释: Java - How to create new Entry (key, value)

你说:

正如谷歌结果似乎说你必须制作自己的 Entry 课程才能做到这一点?

Java 6 之前的版本也是如此。提到的类AbstractMap.SimpleEntry是在 Java 6 中添加的,可以(ab)用于此目的。 在此之前,您必须创建自己的实现。


面向对象编程

另一种可能更好的选择可能是创建您自己的小类来保存该数据,然后给它一个适当的名称。

例如,与其使用Map.Entry<String, Integer>来存储一个人的String nameint age ,不如直接创建一个Person类:

public class Person {
    private final String name;
    private final int age;

    // Constructor and getters, ...
}

更具可读性,更易于维护和扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM