다음과 같은 문자열이 있다고 가정해 보겠습니다.
String str = "Website!";
이제 위 문자열을 문자(Character) 리스트로 변환해 보겠습니다.
List<Character> list = str.chars().mapToObj(n -> (char)n).collect(Collectors.toList());
코드 동작 원리
위 한 줄의 스트림 코드는 다음 단계로 동작합니다.
- chars(): 문자열을 각 문자에 해당하는 정수 값들의 IntStream으로 변환합니다.
- mapToObj(n -> (char)n): 각 정수 값을 다시 char 타입으로 박싱하여 Character 객체로 만듭니다.
- collect(Collectors.toList()): 스트림의 요소들을 List<Character> 형태로 수집합니다.
예제
다음은 Java에서 문자열을 문자 리스트로 변환하는 전체 프로그램입니다.
import java.util.*;
import java.util.stream.Collectors;
public class Demo {
public static void main(String[] args){
String str = "Website!";
System.out.println("String = "+str);
List<Character>list = str.chars().mapToObj(n -> (char)n).collect(Collectors.toList());
System.out.println("List of Characters = "+list);
}
}출력 결과
String = Website! List of Characters = [W, e, b, s, i, t, e, !]
이처럼 Java 8의 스트림 API를 활용하면 반복문 없이도 간결하게 문자열을 문자 리스트로 변환할 수 있습니다. 참고로 공백이나 특수문자도 하나의 문자 요소로 그대로 포함된다는 점을 기억해 두면 좋습니다.