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
***** ******
range() method generates a stream of numbers starting from start value but stops before reaching the end value, i.e start value is inclusive and end value is exclusive. Example: IntStream. range(1,5) generates a stream of ' 1,2,3,4 ' of type int .
IntStream rangeClosed() method in Java The rangeClosed() class in the IntStream class returns a sequential ordered IntStream from startInclusive to endInclusive by an incremental step of 1. This includes both the startInclusive and endInclusive values.
IntStream of(int… values) returns a sequential ordered stream whose elements are the specified values. Parameters : IntStream : A sequence of primitive int-valued elements.
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.
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