Split String Tokenizer 차이
Split String Tokenizer 차이
String Tokenizer
- 자바에서 하나의 문자열을 구분자(delimiter)를 통해 여러 개로 분리할 때 사용하는 클래스
- 구분자에 여러 문자를 사용하면 각 문자별로 구분이 됨
- Ex) 구분자가
",:"
라면","
로 분리하고,":"
로 각각 분리함
- Ex) 구분자가
- 빈 문자열을 인식하지 않음
nextToken
메소드를 통해 분리된 string을 하나씩 반환함- 호환성을 위한 레거시 클래스로, 사용이 지양됨
Split
- 문자열을 구분자를 통해 여러 개로 분리하는 메소드. String 클래스에 들어있음
- String 배열로 결과를 반환
- 정규 표현식 (RegEx)을 이용해서 문자열을 탐색
- 빈 문자열을 인식함
성능 차이에 대한 고찰
- Split의 경우 정규 표현식을 사용하는 만큼 시간이 약간 오래 걸리지만, 구분자 길이에 영향을 받지 않음
- String tokenizer는 구분자와 문자열을 일일이 비교함
- 따라서 시간 복잡도는
O(구분자의 갯수 * string의 길이)
- 구분자가 길어지는 만큼 시간이 오래 걸림
- 따라서 시간 복잡도는
- 따라서 짧은 구분자라면 string tokenizer, 긴 구분자라면 Split이 빠름
- 단, string tokenizer는 레거시 코드
References
- https://dev-coco.tistory.com/94
- https://blog.naver.com/PostView.nhn?blogId=makga87&logNo=221949199317
- https://codingdog.tistory.com/entry/java-split-%EB%A9%94%EC%86%8C%EB%93%9C-stringtokenizer%EB%B3%B4%EB%8B%A4-%ED%95%AD%EC%83%81-%EB%8A%90%EB%A6%B4%EA%B9%8C%EC%9A%94