diff --git a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java index 4dc0455192..cbe4deb9a0 100644 --- a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java +++ b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java @@ -12,29 +12,40 @@ public class StringToCharStream { public StringToCharStream() { - //let's use the Stream API to manipulate a string - //this will count the occurrence of each character in the test string + //let's use the Stream API to manipulate a string + //this will count the occurrence of each character in the test string - System.out.println("Counting Occurrence of Letter"); - String testString = "Noww"; + String testString = "tests"; - //we don't want to use foreach, so . . . + //first get an IntStream + IntStream intStream = testString.chars(); + IntStream intStream1 = testString.codePoints(); - Map map = new HashMap<>(); + //now let's map them + Stream characterStream = intStream.mapToObj(c -> (char) c); + Stream characterStream1 = intStream1.mapToObj(c -> (char) c); - testString.codePoints() - .mapToObj(c -> (char) c) - .filter(c -> Character.isLetter(c)) - .forEach(c -> { - if(map.containsKey(c)) { - map.put(c, map.get(c) + 1); - } else { - map.put(c, 1); - } - }); + System.out.println("Counting Occurrence of Letter"); + testString = "Noww"; + + //we don't want to use foreach, so . . . + + Map map = new HashMap<>(); + + testString.codePoints() + .mapToObj(c -> (char) c) + .filter(c -> Character.isLetter(c)) + .forEach(c -> { + if(map.containsKey(c)) { + map.put(c, map.get(c) + 1); + } else { + map.put(c, 1); + } + }); + + //printing out the result here + System.out.println(map.toString()); - //printing out the result here - System.out.println(map.toString()); } diff --git a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java b/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java index 0c265d0b1f..9332ae814c 100644 --- a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java @@ -5,7 +5,9 @@ import org.junit.Test; import java.util.stream.IntStream; import java.util.stream.Stream; +import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; /** @@ -17,12 +19,13 @@ public class StringToCharStreamUnitTest { @Test public void givenTestString_whenChars_thenReturnIntStream() { - assertTrue(testString.chars() instanceof IntStream); + + assertThat(testString.chars(), instanceOf(IntStream.class)); } @Test public void givenTestString_whenCodePoints_thenReturnIntStream() { - assertTrue(testString.codePoints() instanceof IntStream); + assertThat(testString.codePoints(), instanceOf(IntStream.class)); } @Test @@ -33,4 +36,11 @@ public class StringToCharStreamUnitTest { assertNotNull("IntStream returned by codePoints() did not map to Stream", characterStream1); } + @Test + public void givenIntStream_whenMapToObj_thenReturnStringStream(){ + Stream stringStream + = testString.codePoints().mapToObj(c -> String.valueOf((char) c)); + assertNotNull(stringStream); + } + }