페이지

2016년 12월 21일 수요일

[Java] StringTokenizer , 스트링 다루기

오늘 공부 한 내용은 StringTokenizer이다.

갑자기 왜 뜬금 없는 내용이냐면 , 어제 알고리즘 공부를 하다가 같은 로직으로 풀었는데

수행시간에 굉장히 차이나는 코드를 보았다.(나보다 훨씬 빨랐다.)

궁금해서 코드를 보니 첫 번째로 BufferReader와 InputStreamReader의 사용과

StringTokenizer의 사용이였다.

그래서 ! 오늘 공부 한 내용은 StringTokenizer에 대해서 정리를 해보겠다.

먼저 StringTokenizer는 간단하게 말해서 String을 어떤 char로 분해하는 기능을 갖고있다.

그렇다면 "split함수가 있지않냐?" 라는 말이 나올 수 있지만 두가지가 어떻게 다른지

알아보자.

다른점은 크게 아래와 같다.

  1. 분해 후 split은 String[]로 return되지만 , StringTokenizer는 분해 된 값이 해당 객체에 저장된다.
  2. 위와 이어서 , split은 배열로 접근하지만 , StringTokenizer는 iterator와 같이 nextToken()을 활용하여 순차적으로 접근한다.
  3. 접근 후 split은 당연히 String 배열로 남아있지만 , StringTokenizer는 next를 할때 마다 이전 토큰은 사라진다.
  4. split함수는 함수가 call될 때마다 정규 표현식을 사용하기 때문에 수행속도가 느리다.
  5. split함수는 구획문자사이에 값이 없어도 null로 생성되지만 , StringTokenizer는 생략한다.










    위와 같이 문자열 안에 구획문자 사이 공백이 있을 경우 결과 값이 다르게 나온다.


정리 하자면 다음과 같다 .

정형화된 데이터를 분해하기엔 StringTokenizer가 훨씬 더 효율이 좋다. 그러나 비정형화된 데이터를 분해 할 땐 split 함수가 더 좋다.

댓글 없음:

댓글 쓰기