Reputation: 365
layout is int[][]
boolean[][] booleanTileMap = Arrays
.stream(layout)
.map((row) ->
Arrays
.stream(row)
.mapToObj((value) -> value != 0)
.toArray()
)
.toArray(boolean[][]::new);
Full Error:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayStoreException: [Ljava.lang.Object;
at java.base/java.util.stream.Nodes$FixedNodeBuilder.accept(Nodes.java:1222)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
What did I do wrong? IDE didn't highlight any errors or warnings.
Upvotes: 0
Views: 233
Reputation: 365
It worked after changing from boolean to Boolean, and the first toArray() to toArray(Boolean[]::new)
Boolean[][] booleanTileMap = Arrays
.stream(layout)
.map((row) ->
Arrays
.stream(row)
.mapToObj((value) -> value != 0)
.toArray(Boolean[]::new) // This was just .toArary() before
)
.toArray(Boolean[][]::new);
Upvotes: 2