Получение java .util.NoSuchElementException в коде. Почему? - PullRequest
0 голосов
/ 25 января 2020

У меня есть следующий код, указанный ниже:

final LinkedHashMap<String, Integer> linkedHashMapCounterMap = new LinkedHashMap<>(); 
linkedHashMapCounterMap.put("abc", 2); 
linkedHashMapCounterMap.put("xyz", 5); 
final String maxColln = Collections.max(
            linkedHashMapCounterMap.entrySet(),
            (entry1, entry2) -> entry1.getValue().intValue() - 
                                entry2.getValue().intValue())
     .getKey();

После выполнения кода я получаю следующее исключение:

java .util.NoSuchElementException: null в java .util.LinkedHashMap $ LinkedHashIterator.nextNode (LinkedHashMap. java: 721) ~ [?: 1.8.0_202] в java .util.LinkedHashMap $ LinkedEntryIterator.next (LinkedHashMap. java 753): ~ [?: 1.8.0_202] в java .util.LinkedHashMap $ LinkedEntryIterator.next (LinkedHashMap. java: 750) ~ [?: 1.8.0_202] в java .util.Collections.max (Коллекции. java: 708) ~ [?: 1.8.0_202]

1 Ответ

1 голос
/ 25 января 2020

В лямбда-компараторе есть ошибка в крайнем случае, но это не должно вызывать NPE. (Используйте Integer.compareTo(Integer): см. Java Integer compareTo () - зачем использовать сравнение с вычитанием? )

Я думаю, что NPE должен быть из-за ошибки в потоке; например, есть другой поток, модифицирующий карту во время работы этого кода. Я не могу понять, как этот код мог бы быть NPE в next(), любым другим способом.

В любом случае, нам нужен минимальный воспроизводимый пример , чтобы продолжить это.

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