Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

선진이네

[JAVA] StringTokenizer 본문

Language/JAVA

[JAVA] StringTokenizer

악마선진 2022. 5. 5. 14:33

자바는 문자열을 쪼개기 왜이렇게 어려울까,, 파이썬은 메소드 하나로 다 쪼개지던데,, 내 머리가 쪼개지겠네,,

 

내가 StringTokenizer를 만나기 전까지의 생각이다. 메소드 하나를 내가 만드려고 하니 어려웠던 것이였다.

언어를 공부할 때마다 느끼는 것인데 내가 구현하고자 하는 대부분의 것들은 쉽게 사용할 수 있는 메소드들, 활용하도록 만들어 놓은 클래스들이 늘상 존재했다.

 

아는만큼 금방 할 것이고, 꾸준히 하는만큼 많이 알 것이다.

 

StringTokenizer는 문자열을 우리가 지정한 구분자로 쪼개주는 클래스이다.

그렇게 쪼개진 문자열 하나하나를 우리는 Token이라고 부른다.

 

개념적인 것은 몇개 없으니 바로 예제를 살펴보겠다.

생성자는 위와 같이 3가지 경우가 있다.

주석 처리한 것처럼 띄어쓰기 기준인가, 구분자 기준인가, 구분자도 토큰에 포함시킬 것인가 이 세가지를 기준으로 생성자는 3개의 종류가 있다. 원하는 조건에 부합하는 생성자를 사용하면 될 것이다.

 

그렇다면 분리된 토큰을 어떻게 꺼내어 볼지 한번 코드를 살펴보자.

hasMoreTokens() 메소드는 다음 토큰이 있는지를 판단한다.

다음 토큰이 있다면 1값을 반환하여 반복이 이루어지고, 다음 토큰이 없다면 0값을 반환하여 반복을 중지한다.

실질적인 토큰이 출력되는 부분은 nextToken() 메소드이다.  StringTokenizer 객체에서 다음 토큰을 반환해주는 역할을 한다. 따라서 다음 토큰을 출력할 수 있는 것이다.

 

아 근데 위의 예제에서 세번째 토큰에 띄어쓰기가 거슬린다. 그리고 "."도 토큰으로 인식하기 싫다 하면 다음과 같이 코드를 연출해보면 될것이다.

 

Split과 무엇이 다르냐 고 할 수도 있겠지만

Split은 String 클래스에 내장되어 있는 메소드이다. 또 split은 정규 표현식으로 구분하며, 빈 문자열을 토큰으로 인식할 수 있다는 단점이 존재한다. (단점이 아닐 수 있을까?) 

Split은 결과 값이 문자열 배열로 반환된다는 장점이 존재한다. 그에 반해 StringTokenizer은 결과 값이 문자열이기에 전체 토큰을 보려면 하나하나 뽑아낼 수 밖에 없지 아니할 수 없을 것이다.

성능 면에서는 배열에 담아 반환하기에 StringTokenizer보다 약간 뒤쳐질 것이다.

 

언제나 말하지만 그때그때 더 유용한 메소드, 클래스를 사용하면 될 일이다.

'Language > JAVA' 카테고리의 다른 글

[JAVA] Comparable 그리고 Comparator  (0) 2022.06.27
[JAVA] Optional에 관하여,  (0) 2022.06.02
[Java] StringBuilder  (0) 2022.05.03
[JAVA] BufferedReader 그리고 Scanner  (0) 2022.04.29
[JAVA] 메소드 오버라이딩 - 형변환  (0) 2022.04.22