簡體   English   中英

在代碼中獲取 java.util.NoSuchElementException。 為什么?

[英]Getting java.util.NoSuchElementException in the code. Why?

我有以下代碼:

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:在 java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:721) ~[?:1.8.0_202] 在 java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:752) 處為 null [?:1.8.0_202] 在 java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:750) ~[?:1.8.0_202] 在 java.util.Collections.max(Collections.java:708) ~[? :1.8.0_202]

比較器 lambda 中存在邊緣情況錯誤,但這不應導致 NPE。 (使用Integer.compareTo(Integer) :請參閱Java Integer compareTo() - 為什么使用比較與減法?

我認為 NPE 一定是由於線程錯誤; 例如,在此代碼運行時,有另一個線程在修改地圖。 我看不出這段代碼如何在next()中以任何其他方式 NPE 。

無論哪種方式,我們都需要一個最小的可重復示例來進一步研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM