簡體   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