알고리즘 코딩테스트 책에서
구간합 구하기 문제를 풀며
bufferedReader와 StringTokenzier를 사용하게 되었다.
이 두가지는 언제 쓰고 왜 쓰이는 걸까?
buffer란?
컴퓨팅에서 버퍼는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다.
버퍼링이란 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. 다른 말로 '큐'라고도 표현한다.
BufferedReader는 Reader를 상속받은 클래스이며
문자, 배열 및 줄을 효율적으로 읽을 수 있도록 한다.
String tokenizer 클래스는 어플리케이션이 string을 token으로 바꿀 수 있게 해준다.
StringTokenizer 메서드는 식별자, 숫자 및 따옴표로 묶인 문자열을 구별하지 않으며 주석을 인식하고 건너뛰지 않는다.
StringTokenizer 객체는 내부적으로 토큰화할 문자열 내의 현재 위치를 유지한다. 일부 작업은 처리된 문자를 지나 현재 위치를 진행시킨다.
개체를 만드는 데 사용된 문자열의 하위 문자열을 가져옴으로써 토큰이 반환된다.
다음은 토큰화 사용의 한가지 예시다.
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
prints the following output:
this
is
a
test
StringTokenizer는 호환성을 이유로 유지되는 레거시 클래스이지만 새 코드에서는 사용하지 않는다.
이 기능을 원하는 사람은 String의 분할 메서드나 java.util.regex 패키지를 대신 사용하는 것이 좋다.
String[] result = "this is a test".split("\\s");
for (int x=0; x<result.length; x++)
System.out.println(result[x]);
prints the following output:
this
is
a
test
출처
(오라클 사이트에 있는 영문을 번역했더니 말투가 상당히 어색하다..)
https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html
https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html