I have a int[]
converted to a List<Integer>
. The task at hand is to map each element of the set to 0. So I think of converting this List
to a Set
and then map to 0.
So for a set 1, 3, 7, 4, 8
, it should look like: (1, 0), (3, 0), (7, 0), (4, 0), (8, 0)
. To achieve this, I've tried:
Map<Integer, Integer> map = Arrays.stream(elements)
.boxed()
.collect(Collectors.toMap(x -> x, x -> 0));
But while trying this, I get this error:
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 0
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.stream.IntPipeline$4$1.accept(IntPipeline.java:250)
at java.util.Spliterators$IntArraySpliterator.forEachRemaining(Spliterators.java:1032)
at java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:693)
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 DeleteElementsByOccurence.main(DeleteElementsByOccurence.java:18) <-- Refers to the Collectors.toMap line
I know this stuff is super easy in Scala, but I am unable to figure out the logic to do in Java.