Why are char[] the only arrays not supported by Arrays.stream()?

Of course, the answer is “because that’s what the designers decided“. There is no technical reason why CharStream could not exist.

If you want justification, you usually need to turn the the OpenJDK mailing list*. The JDK’s documentation is not in the habit of justifying why anything is why it is.

Someone asked

Using IntStream to represent char/byte stream is a little
inconvenient. Should we add CharStream and ByteStream as well?

The reply from Brian Goetz (Java Language Architect) says

Short answer: no.

It is not worth another 100K+ of JDK footprint each for these forms
which are used almost never. And if we added those, someone would
demand short, float, or boolean.

Put another way, if people insisted we had all the primitive
specializations, we would have no primitive specializations. Which
would be worse than the status quo.

Source

He also says the same elsewhere

If you want to deal with them as chars, you can downcast them to
chars easily enough. Doesn’t seem like an important enough use case
to have a whole ‘nother set of streams. (Same with Short, Byte,
Float).

Source

TL;DR: Not worth the maintenance cost.


*In case you’re curious, the google query I used was

site:http://mail.openjdk.java.net/ charstream

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)