BufferedReader, StringTokenizer 는 문자열로 활용하기 위하여 사용되며 Scanner를 사용하는 것보다 빠르다.

BufferedReader

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
// 1 2 3 4 5 6 7 8 9 10 11 12 한줄로 입력
// Integer.parseInt(s[0]) => 1 s[0] = 1

 

StringTokenizer

  • BufferedReader는 잘라서 배열과 같이 인덱스를 사용하여 접근하여 사용한다.
  • StringTokenizer는 공백이 있다면 뒤에 문자열이 공백 자리를 땡겨 채우도록 한다.
  • StringTokenizer가 BufferedReader보다 빠르게 사용될 수 있다.
  • 문자열을 자르게 위해 split을 사용할땐, split은 정규식을 기반으로 자르는 로직으로서 내부는 복잡하다. 그에 비해 StringTokenizer의 nextToken()메소드는 단순히 공백 자리를 땡겨 채우는 것이다. 그렇기 때문에 속도 차이가 날 수 밖에 없다.
  • 정규식이나 인덱스 접근과 같은 처리가 필요없다면 StringTokenizer를 사용하는 것이 효율적이다.
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


String str = "this%%is%%my%%string"; 
   StringTokenizer st = new StringTokenizer(str,"%%"); 

   while(st.hasMoreTokens()) { 
       System.out.println(st.nextToken()); 
   }
// this is my string

 

반응형

+ Recent posts