차곡차곡

[Java] Java 입출력 최적화 본문

Language/JAVA

[Java] Java 입출력 최적화

sohy 2023. 8. 2. 13:51

# 입력 최적화

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br. readLine(); // "312 3 99 100 846"

/** split 사용 */
// 구분자를 기준으로 쪼개줌, String[] 리턴, 정규화 표현식 처리 가능, 쪼개는 시간이 오래 걸림
String[] srr = line.split(" ");  
System.out.println(Arrays.toString(srr));  // [312, 3, 99, 100, 846]


/** StringTokenizer 사용 */
// 구분자를 기준으로 쪼개줌, 쪼개진 String 하나씩 던져줌, 쪼개는 시간이 빠름
StringTokenizer st = new StringTokenizer(line, " ");  // 구분자 넣는 것이 빠름
while (st.hasMoreTokens()) {
	System.out.println(st.nextToken());
}


/** charAt() */
// String line = br.readLine();  // "2 3 9 1 8"
int[] arr = new int[5];
for (int i = 0, index = 0; i < arr.length; i++, index += 2) {
	arr[i] = line.charAt(index) - '0';  // '2' - '0'
}
  • String.split() 정규화 표현식을 분석하여 쪼개줌. 느림.
  • StringTokenizer 생성자에 델리미터를 넣어서 사용하는 것이 빠름
  • 쪼개지 않아도 되는 경우에는 쪼개지 말자! charAt 사용

 

# 출력 최적화

StringBuilder sb = new StringBuilder();  // 단일 쓰레드용
sb.append('#').append('1').append('\n');
System.out.print(sb.toString));
  • String class 보다 StringBuilder가 훨씬 빠름

'Language > JAVA' 카테고리의 다른 글

[Java] 제곱 팁  (0) 2023.08.03
#13장 스레드와 멀티태스킹  (0) 2021.06.28
#7장 입출력 스트림  (0) 2021.06.28
#6장 패키지 개념과 자바 기본 패키지  (0) 2021.06.28
#5장 상속  (0) 2021.06.28
Comments