티스토리 뷰
StringTokenizer
StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 우리는 토큰(token)이라고 부릅니다.
String : 문자열을
Tokenizer : 토큰화한다.
이렇게 해석할 수 있는데요, 즉 토큰은 분리된 문자열 조각으로, 스트링토크나이저 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스인거죠.
StringTokenizer 작동 방식
StringTokenizer의 인스턴스는 returnDelims Flag가 가지고 있는 true 혹은 false에 따라 토큰을 분리할지 정합니다.
- 만약 false일 경우 한 문장을 각 연속된 문자로 빈칸에 따라(혹은 기에 따라) 여러 토큰으로 분리합니다.
- 만약 true일 경우 전체를 한 토큰으로 간주합니다.
StringTokenizer 생성자
StringTokenizer와 Split의 차이
- StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split는 정규표현식으로 구분한다.
- StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split는 빈 문자열을 토큰으로 인식하는 차이가 있다.
- 배열에 담아 반환하는 스플리트는 데이터를 바로바로 잘라서 반환해주는 스트링토크나이져보다 성능이 약간 뒤쳐진다.
- 하지만 StringTokenizer는 Java API 설명서에서는 사용을 권장하지 않으며 유사한 요구 사항을 충족하기 위해 대신 String 클래스의 split 메서드를 권장합니다.
String[] result = "이것은 테스트입니다".split("\\s");
for (int x=0; x<result.length; x++)
System.out.println(result[x]);
- 왜 StringTokenizer는 Deprecated 되었을까?
StringTokenizer에는 상식적으로 심각한 문제가 있습니다. 연속 구분 기호를 하나의 구분 기호로 취급합니다. 이것은 일반적이거나 전통적인 의미가 아닙니다. 예를 들어 csv에서 'a,,b'는 두 번째 필드가 비어 있는 3개의 필드를 의미합니다. 그러나 Stringtokenizer에서는 기본적으로 이것을 2개의 필드로만 보고 ',,'는 ','로 간주합니다. 이것은 이미 많은 프로그래머를 혼란스럽게 하고 불필요한 디버깅 노력을 경험하게 합니다.
참고: https://reakwon.tistory.com/90,https://www.developer.com/database/exploring-the-java-string-tokenizer/,https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html,https://stackoverflow.com/questions/6983856/why-is-stringtokenizer-deprecated
Parse
'JAVA' 카테고리의 다른 글
[JAVA] 인터페이스 (0) | 2023.02.23 |
---|---|
[JAVA] 람다 (1) | 2023.01.30 |
[JAVA] JVM (0) | 2023.01.14 |
[JAVA] 객체지향설계 5원칙 - SOLID (0) | 2022.11.07 |
[JAVA] Stream (0) | 2022.09.14 |