Simplest way to print an `IntStream` as a `String`

java, java-8, java-stream

Solution

String result = "Hello world."
  .codePoints()
//.parallel()  // uncomment this line for large strings
  .map(c -> c == ' ' ? ' ': '*')
  .collect(StringBuilder::new,
           StringBuilder::appendCodePoint,
           StringBuilder::append)
  .toString();

But still, `"Hello world.".replaceAll("[^ ]", "*")` is simpler. Not everything benefits from lambdas.

Problem

With Java-8 I can easily treat a `String` (or any `CharSequence`) as an `IntStream` using either the `chars` or the `codePoints` method. ``` IntStream chars = "Hello world.".codePoints(); ``` I can then manipulate the contents of the stream ``` IntStream stars = chars.map(c -> c == ' ' ? ' ': '*'); ``` I have been hunting for a tidy way to print the results and I cant even find a simple way. How do I put this stream of `int`s back into a form that can be printed like I can a `String`. From the above `stars` I hope to print ``` ***** ****** ```

Original source

Related problems