[英]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.