StringTokenizer와 split() 전부 문자열을 구분하는데, 뭐가 다른 거지?
자바에서 문자열을 구분자로 분리하고 싶을 때는 StringTokenizer, split()을 사용하고 있으며,
같으면서도 일부분 차이가 있기 때문에 개념을 파악하고 쓰는 게 좋을 것 같다는 생각이 들었다.
StringTokenizer
- java.util에 포함되어 있는 메서드이며, 구분자를 지정하여 문자열로 나누고 생략하면 공백이 기본 구분 자이다.
- split처럼 여러개의 구분자가 아닌 지정한 한 가지의 구분자로만 사용할 수 있다.
- countTokens() : 남아있는 토큰 수 int 반환
- hasMoreTokens() : 토큰이 남아있는지의 여부 true, flase로 반환
- nextToken() : 토큰 String 반환
split()
- String 클래스의 메서드이며, 구분자를 지정하여 문자열로 나눠 배열에 저장하고 공백도 문자열에 포함된다.
- | 를 사용하여 여러개의 구분자를 정하여 사용할 수 있다.
간단하게 예시 코드로 어떤식으로 출력되는지 파악하는 것이 이해하기 쉽다.
★ 콤마(,) 기준으로 StringTokenizer, split() 사용한 코드 예시 ★
public class StringTest{
public static void main(Stirng[] args){
String str = "one,two,three";
stringTokenizerTest(str);
splitTest(str);
}
public static void stringTokenizerTest(String str){
StringTokenizer st = new StringTokenizer(str, ",");
for(int i = 0; tokenizer.hasMoreTokens(); i++){
System.out.println(i + "." + tokenizer.nextToken());
}
}
public static void splitTest(String str){
String split[] = str.split(",");
for(int i = 0; str.split.length; i++){
System.out.println(i + "." + split[i]);
}
}
}
1. String str = "one,two,three"; [위 코드와 동일]
- StringTokenizer 출력 : 0번째 one, 1번째 two, 2번째 three
- split 출력 : 0번째 one, 1번째 two, 2번째 three
2. String str = "one,two,,three"; [구분자 사이에 데이터가 없을 경우]
- StringTokenizer 출력 : 0번째 one, 1번째 two, 2번째 three
- split 출력 : 0번째 one, 1번째 two, 2번째 (공백), 3번째 three
3. String str = "one,two,three,"; [구분자가 마지막에 끝날 경우]
- StringTokenizer 출력 : 0번째 one, 1번째 two, 2번째 three
- split 출력 : 0번째 one, 1번째 two, 2번째 three
※ 둘 중 어떤 것을 사용하는 것이 좋은지에 대해서는 추후 업데이트 할 예정
'Language > Java' 카테고리의 다른 글
| [Java] OkHttp로 외부 API 호출하기!(with. Spring Boot) (0) | 2024.03.20 |
|---|---|
| [Java] JVM 개념 및 Java 실행 과정 (0) | 2022.03.24 |
| [Java] HashMap 개념 및 주요 메서드 정리 (0) | 2022.02.13 |