I figured I could extrapolate from this question but I can't
I can of course do
short[] shortarray = {0,1,2};
List<Short> shortList = new ArrayList<Short>();
for (Short s : shortarray) {
shortList.add(s);
}
But I'm wondering how to do it with streams.
List<Short> shortList = Arrays.stream(shortarray).boxed()
.collect(Collectors.toList());
doesn't work for example but yields The method stream(T[]) in the type Arrays is not applicable for the arguments (short[])
Why not
IntStream.range(0, shortarray.length)
.mapToObj(s -> shortarray[s])
.collect(Collectors.toList());
As to why it does not work with a primitive short[]:
there is no Stream type of short. Streams only work for non primitive types or with IntStream, LongStream, and DoubleStream.
For it to work you would have to convert your shorts to a datatype with a compatible Stream, for example Short, or maybe to int for an IntStream (see ernest_k's answer).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With