์ด๋ฒ ํฌ์คํธ์๋ StringTokenizer์ ๋ํด ์์ฑํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
PS์์ ์ด๋ป๊ฒ๋ ์๋๋ฅผ ์กฐ๊ธ ๋ ๋์ฌ๋ณด๋ ค๊ณ ์ฌ๋๋ค์ด ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฃ ?
๊ทธ ์ค ํ๋๊ฐ StringTokenizer ์ ๋๋ค.
์ ๋ง StringTokenizer์ ์ฑ๋ฅ์ด ๊ทธ๋ ๊ฒ ์ฐ์ํ ๊น?
์ง์ ํ ์คํธ ํด๋ดค์ต๋๋ค.
package com.study.datastructrue.string;
import java.util.StringTokenizer;
public class DevidePerformTest {
public static void main(String[] args) {
String str = "one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five one two three four five";
//String str = "์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ์ผ ์ด ์ผ ์ฌ ์ค ";
long startTime = System.nanoTime();
String[] splitArray = str.split(" ");
long endTime = System.nanoTime();
System.out.println("String.split() time: " + (endTime - startTime) + " ns");
startTime = System.nanoTime();
StringTokenizer tokenizer = new StringTokenizer(str);
endTime = System.nanoTime();
System.out.println("StringTokenizer time: " + (endTime - startTime) + " ns");
System.out.println("String.split() result:");
for (String s : splitArray) {
System.out.print(s);
}
System.out.println();
System.out.println("StringTokenizer result:");
while (tokenizer.hasMoreTokens()) {
System.out.print(tokenizer.nextToken());
}
}
}
์ด๊ฒ JDK 11์ด๋ 21์ด๋ ์๋๊ฐ ๋๊ฐ๋๋ผ๊ตฌ์.
ASCII ๊ธฐ๋ฐ ์งง์ ๋ฌธ์์ด split() > Tokenizer
ASCII ๊ธฐ๋ฐ ๊ธด ๋ฌธ์์ด split() < Tokenizer
UNICODE ๊ธฐ๋ฐ ๋ฌธ์์ด split() < Tokenizer
์ด๋ฒ์๋ ๋ฐ๋ก ๋ด๋ถ๋ ๋ฏ์ด์ ์ค๋ช ํ์ง๋ ์๊ฒ ์ต๋๋ค. (๋๋ฌด ๋ณต์กํจ)
๋์ , StringTokenizer๋ฅผ ๋ถ์ํ์ ํฌ์คํธ๊ฐ ์์ต๋๋ค. (์ฌ๊ธฐ)
๋ณดํต PS์์ ์๊ฐ ํจ์จ์ ํฌ๊ฒ ๋ฐ์ง๋ ๋ฐ์ดํฐ๋ N >= 10,000 ์ธ ๊ฒฝ์ฐ๊ฐ ๋๋ค์์ด๋๊น StringTokenizer๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค์. ์ถ๊ฐ๋ก ํด๋น ํฌ์คํธ์์ ์์ธํ ์ค๋ช ์ ํด๋์๋๋ผ๊ตฌ์.
์ง๊ธ ์ ํ ์คํธ ์ฝ๋์ ๊ฒฝ์ฐ, ๊ตฌ๋ถ์๋ฅผ ๊ณต๋ฐฑ(" ")์ผ๋ก ํด๋์์ต๋๋ค. ์ ํฌ์คํธ์์ ๋งํ๊ธฐ๋ฅผ ๊ตฌ๋ถ์๊ฐ ์ ๋์ฝ๋๊ฐ ์๋ ์์คํค์ฝ๋๋ผ๋ฉด, split()์ด ๋ ๋น ๋ฅด๋ค. (StringTokenizer๊ฐ Unicode์ ๋ํด ์ค๊ณํ์ง ์์ Legacy Code์ด๊ธฐ ๋๋ฌธ์ด๋ค.)
๊ฐ์ฌํฉ๋๋ค.
'JAVA > ๊ธฐํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java Fast I/O 3 (feat. BOJ, String, StringBuilder) (0) | 2024.07.06 |
---|---|
Java Fast I/O (feat. BOJ, BufferedReader, BufferedWriter) (0) | 2024.07.06 |