Split VS StringTokenizer?

kwon_yongil_·2021년 5월 9일
0

알고리즘

목록 보기
6/9

🤔 둘 다 같은거 아닌가?

  • 나도 처음엔 같은줄 알고, 무분별하게 사용했었다. 하지만, 그걸 깨준 문제가 있어서 공유하려고 한다.

  • https://www.acmicpc.net/problem/15681

  • 위 문제를 풀어보면, Split으로 풀어보면 무조건 틀린다.

  • 무슨 입출력으로 장난을 치냐 생각했는데, 새로운 사실을 알았으니 봐준다!

😎 어떻게 다른가 알아보자!

  • StringTokenizer은 말그대로, 구분자의 개수를 상관하지 않고 Token만 뽑아낼 수 있다.

  • Split은 구분자의 개수를 상관한다.

👍 예제 코드

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
	public static void main (String[] args) throws java.lang.Exception
	{
		String test = "333  333      3333";
		
		String[] sArr = test.split(" ");
		StringTokenizer stk = new StringTokenizer(test, " ");
		
		// split
		for(int i = 0; i < sArr.length; i++){
			System.out.println(i +  " " + sArr[i]);
		}
		System.out.println();
		
		// StringTokenizer
		int stkIdx = 0;
		while(stk.hasMoreTokens()){
			System.out.println(stkIdx + " " + stk.nextToken());
			stkIdx++;
		}
	}
}

💖 출력 결과

  • 출력 결과를 분석하기 위해, 클래스의 정확한 동작 원리까지 파악하고 싶진 않다.

  • 중요한 것은 공백을 없애기 위해서는 StringTokenizer를 사용해야 한다는 사실이다.

0 333
1
2 333
3
4
5
6
7
8 3333

0 333
1 333
2 3333

관심 있을 만한 포스트

0개의 댓글