Kotlin의 StringTokenizer는 문자열을 효율적으로 분리하여 처리할 수 있는 클래스입니다.
공백이나 특정 구분자를 기준으로 문자열을 나누는 작업이 잦은 상황에서 split()보다 훨씬 뛰어난 성능을 제공하며, 반복적인 문자열 파싱이 필요한 경우 유용하게 사용됩니다.
StringTokenizer는 문자열을 한 번에 나누어 배열을 생성하지 않고, 내부적으로 토큰의 위치만 관리하면서 순차적으로 처리하기 때문에 불필요한 객체 생성을 줄일 수 있습니다.
StringTokenizer는 Kotlin의 문자열 분리 클래스입니다. 일반적인 String.split()은 문자열을 분리할 때마다 여러 개의 String 객체와 컬렉션을 생성하지만, StringTokenizer는 하나의 문자열을 유지한 채 토큰을 하나씩 꺼내어 처리합니다.
문자열을 반복적으로 파싱하는 경우, StringTokenizer의 성능 차이가 확실하게 드러납니다.
val input = "1 3"
val parts = input.split(" ")
val command = parts[0].toInt()
val value = parts[1].toInt()
이 코드는 split() 호출 시 문자열 배열이 생성되며, 분리된 각 요소 또한 새로운 String 객체로 만들어집니다.
import java.util.StringTokenizer
val input = "1 3"
val st = StringTokenizer(input)
val command = st.nextToken().toInt()
val value = st.nextToken().toInt()
StringTokenizer는 내부 문자열을 그대로 유지하면서 토큰을 순차적으로 반환하므로 훨씬 효율적입니다. 문자열 배열을 생성하지 않기 때문에 객체 생성 비용 감소 및 GC 부담 감소, 그리고 메모리 사용량이 감소합니다.
StringTokenizer는 문자열을 자주 분리하거나 반복적으로 파싱해야 하는 상황에서 split()보다 훨씬 빠르고 효율적인 선택입니다.
이러한 경우에는 split() 대신 StringTokenizer 사용을 우선적으로 고려하는 것이 좋습니다.