Map.entry (...) не определен для типа Map - PullRequest
0 голосов
/ 13 февраля 2020

Я возился с Java и хэш-картами на компьютере в школе.

Я смог создать экземпляр Entry типа String, Integer на лету. Затем добавьте его к ArrayList из Entrie с. Я отправил этот код себе на потом.

Однако на моем домашнем компьютере и ноутбуке он мне не позволил. Тот же самый точный код говорит:

Метод entry(string,int) не определен для типа Map

Код:

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

Я думаю, что это как-то связано с тем фактом, что Map.Entry - это интерфейс?

Как показывают результаты Google, вы должны создать собственный класс Entry для этого? Но изменилось ли это в новых версиях Java? Почему мне удалось выполнить этот код очень хорошо раньше

1 Ответ

5 голосов
/ 13 февраля 2020

Пояснение

Поиск Javado c этого метода. Там написано:

С: 9

Это означает, что этот метод был добавлен в Java 9.

на вашей машине, вероятно, не было Java 9 или новее.


Обновите

Запустите java -version и javac -version в CMD для проверки вашей версии. Затем установите более позднюю версию Java (например, из AdoptOpenJDK ).


Pre Java 9

На случай, если вы ищете решение, которое работает без Java 9, вы можете использовать что-то вроде:

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

Как более подробно объяснено здесь: Java - Как создать новую запись (ключ, значение)

Вы сказали:

Как показывают результаты Google, вам нужно создать собственный класс Entry для этого?

Это верно для версий до Java 6. Упомянутый класс AbstractMap.SimpleEntry был добавлен в Java 6 и может быть (ab) использован для этой цели. Перед этим вам нужно будет создать свою собственную реализацию.


OOP

Другой вариант, который, возможно, может быть лучше, может состоять в том, чтобы создать свой собственный маленький класс для хранения этого данные и затем дать ему правильное имя.

Например, вместо Map.Entry<String, Integer>, который хранит человека по его String name и int age, почему бы не создать класс Person напрямую:

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

    // Constructor and getters, ...
}

Гораздо удобнее для чтения, проще в обслуживании и расширении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...