Scanner와 BufferedReader 차이 & 특징
1. 속도
속도는 압도적으로 BufferedReader가 빠르다.
Scanner는 입력 즉시 바로 데이터를 입력한다면
BufferedReader는 말 그대로 버퍼링이 된 후 전달된다. 버퍼링을 하게 되면 미리 버퍼에 데이터를 올려놓기 때문에 효율성이 높아진다.
2. 사용편의
BufferedReader는 String만 지원되는 반면, Scanner는 정수형 소수형 문자 모두 지원한다.
그리고 Scanner는 정규식을 사용해 파싱 할 수 있다는 장점도 있다.
텍스트를 읽는 과정에서 정규 표현식을 사용해 기본적으로 공백을 기준점 삼아 입력 값을 토큰화 해 변환할 수 있다.
Scanner의 사용 편의성이 장점이지만 이러한 과정을 거치게 되며 낮은 퍼포먼스가 도출되어 속도에 있어선 단점으로 작용된다.
3. 동기화
Scanner는 스레드 간 공유가 불가능한 싱글 스레드 형태로 운용되고
BufferedReader는 여러 스레드 간에 공유가 가능하다.
결론
입력받을 데이터가 많다? BufferedReader
입력받을 데이터가 많지도 않고, 문자로 입력받으면 형 변환이 골치 아프다? Scanner
속도 이슈로 시간 초과가 난다? BufferedReader
동기화가 지원되야한다? BufferedReader
'PROGRAMMING > JAVA' 카테고리의 다른 글
| [JAVA] Builder 패턴 (0) | 2022.02.11 |
|---|---|
| [JAVA] Stream을 활용해 Array를 List로 변환하기 (0) | 2021.11.24 |
| [JAVA] Collection Set/Map/List (0) | 2021.11.21 |
| [JAVA] Set, List -> Array로 변환 (0) | 2021.11.05 |
| [JAVA] 배열 정렬하기 (내림차순, 오름차순) (0) | 2021.11.04 |