StringTokenizer란?(split()과 차이점)

최승혁·2025년 9월 12일
post-thumbnail

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()남아있는 토큰 개수를 반환

🔹 split()과의 차이점

구분StringTokenizersplit()
리턴 타입토큰을 하나씩 꺼내 씀문자열 배열(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()과 다르게 순차 접근만 가능하지만, 속도가 빠름

  • 코딩테스트에서 입력 처리 최적화할 때 자주 사용

profile
Full-Stack Developer

0개의 댓글