Java8 ()方法引发的NullPointerException 空指针异常

时间:2025-04-23 08:32:41
package com.example.demo; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class TestSteam { private static class Item { private String key; private String value; public Item(String key, String value) { this.key = key; this.value = value; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } public static void main(String[] args) { List<Item> itemList = Arrays.asList( new Item("1", null), new Item("1", "1"), new Item("1", "2"), new Item("2", "1") ); Map<String, String> itemMap = itemList.stream().collect(Collectors.toMap(Item::getKey, Item::getValue, (oldVal, newVal) -> newVal)); } } // 抛出空指针异常 Exception in thread "main" java.lang.NullPointerException at java.util.HashMap.merge(HashMap.java:1225) at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at com.example.demo.TestSteam.main(TestSteam.java:46)