티스토리 뷰
StringTokenizer란?
긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(Token)이라는 여러 개의 문자열로 잘라내는 데 사용된다.
StringTokenizer의 경우 구분자로 단 하나의 문자 밖에 사용 할 수 없는 단점이 있다.
StringTokenizer 객체를 생성할 때 첫 번째 파라미터로 전체 문자열을 주고, 두 번째 파라미터로 구분자를 주면 된다.
만약 구분자가 생략되면 구분자는 기본적으로 공백(space)가 된다.
StringTokenizer st = new StringTokenizer("문자열", "구분자");
public class StringTokenizer implements Enumeration<Object> { .. .}
StringTokenizer 주요 메소드
메소드 | 설명 |
StringTokenizer(String str, String delim) | 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성한다.(구분자는 토큰으로 간주되지 않음) |
StringTokenizer(String str, String delim, boolean returnDelims) | 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성한다. returnDelims의 값을 true로 하면 구분자도 토큰으로 간주. |
int countTokens() | 분리한 전체 토큰의 개수 반환 |
boolean hasMoreTokens() | 토큰이 존재하면 True 리턴 |
String nextToken() | 다음 토큰을 반환 (The next token from this string tokenizer) |
알고리즘에 자주 쓰이는 예제
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); // AB CDD EFFF GH 입력 st.nextToken() // AB st.nextToken() // CDD st.nextToken() // EFFF st.nextToken() // GH |
- java readline, nextLine(한줄 바로 입력받음)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tokenizer; int countLocation = Integer.parseInt(br.readLine()); SortLocation[] sortLocations = new SortLocation[countLocation]; for (int i = 0; i < countLocation; i++) { tokenizer = new StringTokenizer(br.readLine()); int x = Integer.parseInt(tokenizer.nextToken()); int y = Integer.parseInt(tokenizer.nextToken()); sortLocations[i] = new SortLocation(x, y); } |
- 입력받은 한줄을 띄어쓰기로 구분하여 x와 y에 해당 값을 입력받는다.
예제
nextToken() 메소드로 토큰을 하나씩 꺼내오면 StringTokenizer객체에는 해당 토큰이 사라진다. 객체에서 더 이상 가져올 토큰이 없는 경우 java.util.NoSuchElementException 예외를 발생시킨다. 따라서 nextToken()메소드를 사용하기 전에 hasMoreTokens()메소드로 꺼내올 토큰이 있는지 조사한 후에 nextToken()메소드를 사용하는 것이 바람직하다.
100,200,300 => 콤마로 구분
가나 다라 마바 사아 => 띄어쓰기로 구분
+-*/=() => 각각의 문자 모두 구분자로 구분
Q. BufferReader의 Split와 StringTokenizer의 차이는?
Q. Enumeration 이란?
Q. StringTokenizer에서 객체를 꺼낼 경우 Data가 사라지는 원리는?
출처: https://palpit.tistory.com/879 [palpit Vlog], Java의 정석,https://wkimdev.github.io/,https://cuddlyciel.tistory.com/
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향설계 5원칙 - SOLID (0) | 2022.11.07 |
---|---|
[JAVA] Stream (0) | 2022.09.14 |
ArrayList 정렬 : Comparable 과 Comparator (0) | 2020.01.06 |
향상된 For 문(+ArrayList에서 index 가져오기) (0) | 2020.01.06 |
객체 배열이란(클래스를 배열로 선언하기) (0) | 2020.01.03 |