天天看點

java.lang.IllegalStateException: Duplicate key問題的解決方案

異常

Exception in thread "main" java.lang.IllegalStateException: Duplicate key 777

    at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)

    at java.util.HashMap.merge(HashMap.java:1254)

    at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)

    at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)

    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)

    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)

    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)

    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.jd.rfs.test.test.main(test.java:98)

說明轉換過程map時出現key重複的情況

解決方案是:java8中轉換成map時,提供了第三個參數,代表的是重複key的值該如何存放,如下:

Map<String, String> RelationMap = relation.stream().collect(Collectors.toMap(s -> s[2], s -> s[1], (oldValue,newValue)->newValue)));//出現重複時,存放最後一次的value,此處可以根據需求自行處理;

案例:

java.lang.IllegalStateException: Duplicate key問題的解決方案