728x90
속도 비교
Scanner <BufferedReader <StringTokenizer
Scanner BufferedReader StringTokenizer
- 다양한 기능을 지원해서 무거움 - 데이터를 라인 단위로 읽기 위해 사용
- 잘라서 배열과 같이 인덱스로 접근하여 사용
- 구분자를 기반으로 토큰을 분리하기 위한 도구
- 문자열을 파싱하고 조각으로 나눌때 사용
- 문자열의 공백 자리를 땡겨 채운다(nextToken())
- 정규식,인덱스 접근 처리가 필요없다면 효율적(split은 정규식을 기반으로 자르는 로직으로 내부가 복잡)

입력

1. Scanner

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

 

2. BufferedReader

import java.io.*;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();

 

3. StringTokenizer

import java.io.*;
import java.util.StringTokenizer;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

LinkedList<Integer> list = new LinkedList<>();
while(st.hasMoreTokens()){ // hasMoreTokens(): 리턴할 다음 토큰이 있으면 true, 없으면 false
    list.offer(new Integer(st.nextToken())); // nextToken(): 다음 토큰 리턴, 이전 토큰 제거
}

// countTokens(): 토큰의 갯수를 리턴

출력

1. System.out.println

System.out.println("hi");

 

2. BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

bw.write("data");

bw.flush(); // 스트림을 닫지 않은 상태에서 바이트를 내보냄
bw.close(); // 스트림을 닫음과 동시에 바이트를 내보냄
728x90

+ Recent posts