天天看点

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问题的解决方案