String[] java.lang.String.split(String regex)
java.util.StringTokenizer.StringTokenizer(String str, String delim)
우선 위의 Method Summary에서 알 수 있듯이 delimiter가 split() 은 정규식을, StringTokenizer는 일반 문자열을 지원한다.
하지만 이 외에도 delimiter에 의해서 생성된 각 token들이 null 일 경우에 대한 처리가 다르다.
split()은 null token 을 빈문자열로 변환하여 배열에 저장하지만, 배열의 뒷부분에 null token은 배열에 저장하지 않는다.
StringTokenizer는 모든 null token에 대하여, 무시하고 건너 뛴다.
StringSplitTest.java
''
''
'a'
'b'
'c'
''
'd'
'a'
'b'
'c'
'd'
가급적 대용량 파일이나 데이타를 처리할 때에는 StringTokenizer는 쓰는 것이 좋을 것이다.
Windows 7 64 bit 에서 돌린 결과는 아래와 같고, split()이 약 10배 느리다.
StringSplitBenchmarkTest.java
StringTokenizer: 0 hours 0 mins 0 secs 35 milisecs
String.split() : 0 hours 0 mins 0 secs 297 milisecs
'Java' 카테고리의 다른 글
[박혜웅] JAVA Serialize, Deserialize Benchmarks (0) | 2010.12.16 |
---|---|
[박혜웅] JAVA Ordered Collection (입력순서를 유지하는 컬렉션 클래스) (0) | 2010.12.15 |
[박혜웅] JAVA hashCode() (0) | 2010.12.14 |
[박혜웅] JAVA Reflection (0) | 2010.12.14 |
[박혜웅] JAVA float, double, BigDecimal (0) | 2010.12.14 |