在代码中获取java.util.NoSuchElementException。为什么?

在代码中获取java.util.NoSuchElementException。为什么?,java,collections,Java,Collections,我有以下代码: final LinkedHashMap<String, Integer> linkedHashMapCounterMap = new LinkedHashMap<>(); linkedHashMapCounterMap.put("abc", 2); linkedHashMapCounterMap.put("xyz", 5); final String maxColln = Collections.max( linkedHash

我有以下代码:

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$LinkedHashInterator.nextNodeLinkedHashMap.java:721 约[?:1.8.0_202]at java.util.LinkedHashMap$LinkedEntryIterator.nextLinkedHashMap.java:752 约[?:1.8.0_202]at java.util.LinkedHashMap$LinkedEntryIterator.nextLinkedHashMap.java:750 位于java.util.Collections.maxCollections.java:708的~[?:1.8.0202] ~[?:1.8.0_202]


比较器lambda中有一个edge case错误,但这不应该导致NPE。使用Integer.compareToInteger:请参阅

我认为NPE一定是由于线程错误造成的;e、 g.此代码运行时,另一个线程正在修改映射。我看不出这段代码如何在下一步以任何其他方式NPE


无论哪种方式,我们都需要一个更进一步的解决方案。

它在Java-8和Java-13中适用于我,您能告诉我们您的产品是什么吗?另外,您使用的是哪个版本的Java?