프로그래밍 언어/JAVA

빠른 입출력

Mev01 2021. 1. 30. 18:40

sysout과 Scanner

sysout(= System.out.println() ) 같은 경우 출력하고 싶은 내용을 한 번에 모아두었다가 출력하면 큰 문제가 없지만 반복문 안에 넣어서 계속 부르게 된다면 큰 시간이 걸리게 된다.

Scanner 같은 경우는 입력받은 내용을 정규식에 맞는지 많은 검사를 하기 때문에 시간이 오래 걸리게 된다.

 

빠른 입력: BufferedReader

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String s = br.readLine(); //String
int i = Integer.parseInt(br.readLine()); //Int
int j = br.read(); //Int 하나

br.close();

BufferedReader를 이용하면 Scanner보다 훨씬 빠르게 입력을 받을 수 있다.

BufferedReader를 이용할 때  자주 쓰는 방식이 한 줄 전체를 읽어오는 readLine( )이다.

주의할 점은 readLine( )은 String을 반환하기 때문에 다른 타입을 이용하고 싶다면 형 변환이 필요하다는 것이다.

int로 변환하기 위해서는 Integer.parseInt( )를 쓴다.

 

빠른 입력: BufferedReader의 데이터 가공

String s = "ab cd";
StringTokenizer st = new StringTokenizer(s);

String first = st.nextToken(); //ab
String second = st.nextToken(); //cd

s = "12 34";
st = new StringTokenizer(s);

int first1 = Integer.parseInt(st.nextToken()); //12
int second1 = Integer.parseInt(st.nextToken()); //34

s = "ab cd"
String array[] = s.split(" ");
// 0: ab 1: cd

BufferedReader를 이용하면 문장 전체를 가져오게 되므로 문장에서 내가 원하는 내용을 가공할 필요가 있다.

StringTokenizer의 nextToken( )을 이용하면 String의 값을 공백단위로 구분하여 넣을 수 있다.

String의 값을 공백단위로 구분하여 배열에 한 번에 넣으려면 split( )을 이용하면 된다.

 

빠른 출력: BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "abcdefg";//출력할 문자열

bw.write(s);
bw.newLine(); //줄바꿈
bw.write(s+"\n");

bw.flush();//남아있는 데이터를 모두 출력
//출력
//abcdefg
//abcdefg

bw.close();//스트림을 닫음

BufferedWriter의 경우 출력할 내용을 한번에 버퍼에 잡아 놓았다가 flush( )를 통해 전체 출력하게 된다.

출력할 내용이 있을 경우 write( )를 통해 계속 버퍼에 추가한다.

 

References

st-lab.tistory.com/30

coding-factory.tistory.com/251

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

코테에서 잘 쓰이는 내장함수  (0) 2021.09.02
JAVA 정규식  (0) 2021.08.26