StringTokenizer은 Java에서 문자열을 특정 구분자(delimiter)를 기준으로 잘라주는 클래스입니다.
split() 메서드와 비슷하지만, 더 가볍고 빠른 동작을 위해 만들어졌습니다.
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
String str = "apple,banana,orange";
// 구분자: ","
StringTokenizer st = new StringTokenizer(str, ",");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
출력
apple
banana
orange
| 메서드 | 설명 |
|---|---|
hasMoreTokens() | 다음 토큰이 존재하면 true 반환 |
nextToken() | 다음 토큰을 반환 |
countTokens() | 남아있는 토큰 개수를 반환 |
| 구분 | StringTokenizer | split() |
|---|---|---|
| 리턴 타입 | 토큰을 하나씩 꺼내 씀 | 문자열 배열(String[]) 반환 |
| 성능 | 가볍고 빠름 | 상대적으로 무거움 |
| 정규식 지원 | ❌ 불가능 | ✅ 가능 (정규식 기반 분리) |
| 사용 편의성 | 순차 접근 | 랜덤 접근 가능 |
import java.io.*;
import java.util.StringTokenizer;
public class FastInput {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
System.out.println(A + B);
}
}
}
장점
입력값이 공백 단위로 구분될 때 빠르게 처리 가능
별도의 배열 선언 없이 순차적으로 값 꺼내기 가능
입력 데이터가 공백 또는 단순 구분자로 구분될 때
빠르고 가벼운 파싱이 필요할 때
코딩테스트에서 split() 대신 빠른 성능이 필요할 때
StringTokenizer는 문자열을 구분자 단위로 잘라주는 클래스
split()과 다르게 순차 접근만 가능하지만, 속도가 빠름
코딩테스트에서 입력 처리 최적화할 때 자주 사용