자바 프로그래밍을 하다 보면 Character 타입의 리스트(List)를 하나의 문자열(String)로 합쳐야 하는 경우가 종종 있습니다. 이럴 때 Stream API를 활용하면 단 한 줄의 코드로 손쉽게 변환할 수 있습니다.
문자 리스트 준비하기
먼저 다음과 같이 여러 개의 문자를 담고 있는 리스트가 있다고 가정해 보겠습니다.
List<Character> list = Arrays.asList('W', 'e', 'l', 'c', 'o', 'm', 'e');리스트를 문자열로 변환하는 방법
스트림(Stream)을 사용하면 위 리스트를 아래와 같이 간단하게 문자열로 변환할 수 있습니다.
String string = list.stream().map(String::valueOf).collect(Collectors.joining());
동작 원리를 살펴보면 다음과 같습니다.
list.stream(): 리스트를 스트림으로 변환합니다.map(String::valueOf): 각Character요소를String타입으로 변환합니다.collect(Collectors.joining()): 변환된 문자열들을 구분자 없이 하나로 연결합니다.
전체 예제 코드
다음은 자바에서 Character 리스트를 문자열로 변환하는 완전한 예제 프로그램입니다.
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<Character> list = Arrays.asList('W', 'e', 'l', 'c', 'o', 'm', 'e');
String string = list.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println("String = "+string);
}
}실행 결과
프로그램을 실행하면 리스트에 담긴 문자들이 순서대로 연결되어 다음과 같은 결과가 출력됩니다.
String = Welcome
이처럼 map()과 Collectors.joining()을 조합하면 별도의 반복문 없이도 깔끔하고 가독성 좋은 코드로 문자 리스트를 문자열로 변환할 수 있습니다.