024 문자열 변환
어떤 문자열을 또 다른 문자열로(예를 들어 대문자로) 변환한다고 가정하자. Function<? super String, ? extends R> 같은 형태의 함수를 적용하면 된다.
JDK 8에서는 다음의 두 간단한 예제처럼 map()을 쓰면 된다.
// hello world
String resultMap = Stream.of("hello")
.map(s -> s + " world")
.findFirst()
.get();
// GOOOOOOOOOOOOOOOOL! GOOOOOOOOOOOOOOOOL!
String resultMap = Stream.of("gooool! ")
.map(String::toUpperCase)
.map(s -> s.repeat(2))
.map(s -> s.replaceAll("O", "OOOO"))
.findFirst()
.get();
JDK 12부터는 transform(Funcion<? super String, ? extends R> f)라는 새 메서드가 등장했다. 위 코드를 transform()으로 다시 작성해보자.
// hello world
String result = "hello".transform(s -> s + " world");
// GOOOOOOOOOOOOOOOOL! GOOOOOOOOOOOOOOOOL!
String result = "gooool! ".transform(String::toUpperCase)
.transform(s -> s.repeat(2))
.transform(s -> s.replaceAll("O", "OOOO"));
map()이 보다 일반적이고, transform()은 함수를 문자열에 적용해 결과 문자열을 반환하는 데 쓰인다.