StringTokenizer 클래스란?
BufferedReader 클래스의 메서드로 입력을 읽어들이면, 라인 단위로 읽어들일 수밖에 없어요.
거기서 머 스페이스 기준으로 문자열을 분리한다던가 필요할때가 많겠죠?
BufferedReader 클래스가 아니더라도, 컴마로 구분되는 문자열들을 분리한다던가,
특정 문자에 따라 문자열을 나누고 싶을 때에 StringTokenizer를 이용하실 수 있습니다.
String : 문자열을
Tokenizer : 토큰화한다.
즉 토큰은 분리된 문자열 조각으로, 스트링토크나이저 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스인거죠.
StringTokenizer 생성자
StringTokenizer를 생성하는 방식에는 3가지가 있습니다.
생성자 | 설명 |
public StringTokenizer(String str); | 절달된 매개변수 str을 기본(default) delim으로 분리합니다. 기본 delimiter는 공백 문자들인 " \t\n\r\t"입니다. |
public StringTokenizer(String str,String delim); | 특정 delim으로 문자열을 분리합니다. |
public StringTokenizer(String str,String delim,boolean returnDelims); | str을 특정 delim으로 분리시키는데 그 delim까지 token으로 포함할지를 결정합니다. 그 매개변수가 returnDelims로 true일시 포함, false일땐 포함하지 않습니다. |
StringTokenizer 메서드
앞에서 nextToken() 이용해 토큰값을 가져올 수 있다는 건 대충 알았어요.
이 외에 이 클래스에서 지원하는 메서드들은 뭐가 있을까요?
리턴값 | 메서드명 | 역할 |
boolean | hasMoreTokens() | 남아있는 토큰이 있으면 true를 리턴, 더 이상 토큰이 없으면 false 리턴 |
String | nextToken() | 객체에서 다음 토큰을 반환 |
String | nextToken(String delim) | delim 기준으로 다음 토큰을 반환 |
boolean | hasMoreElements() | hasMoreTokens와 동일한대 엘레먼트보다 토큰으로 된 메서드를 주로 씀 |
Object | nextElement() | nextToekn 메서드와 동일하지만 문자열이 아닌 객체를 리턴 |
int | countTokens() | 총 토큰의 개수를 리턴 |
자주 사용하는 메서드는 hasMoreTokens, countTokens 그리고 nextToken 정도 되겠습니다.
StringTokenizer와 Split 차이?
둘 다 모두 문자열 파싱하는데 사용할 수 있습니다.
■ StringTokenizer는 java.util에 포함되어 있는 클래스, split는 String클래스에 속해있는 메소드이다.
■ StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split는 정규표현식으로 구분합니다.
■ StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split는 빈 문자열을 토큰으로 인식하는 차이가 있습니다.
■ Stringtokenizer는 결과값이 문자열이라면 split는 결과 값이 문자열 배열입니다. 따라서 StringTokenizer를 이용할 경우, 전체 토큰을 보고 싶다면 반복문을 이용해서 하나하나 뽑을 수 밖에 없어요.
■ 배열에 담아 반환하는 Split는 데이터를 바로바로 잘라서 반환해주는 StringTokenizer보다 성능이 약간 뒤쳐지겠죠? 그러나 데이터양이 많은 경우 거기서 거기기 때문에 크게 신경쓸 필요는 없습니다.
'프로그래밍 & IT > JAVA' 카테고리의 다른 글
[Java] Map 전체 출력(entrySet, keySet, Iterator) :: 우유 (0) | 2022.10.09 |
---|---|
[JAVA] 문자열 비교하기 String에서 ==와 equals 의 차이 (1) | 2022.06.09 |
[JAVA]JAVA String, StringBuffer, StringBuilder 차이점 :: 우유 (0) | 2022.01.30 |
[JAVA] 자바 List Map Set 차이 :: 우유 (0) | 2021.10.06 |
[JAVA] StringTokenizer 사용법 :: 우유 (0) | 2020.12.22 |