-
[Java] StringBuilderJava 2024. 2. 6. 21:00
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tokenizer = new StringTokenizer(br.readLine()); StringBuilder sb = new StringBuilder(); while(tokenizer.hasMoreTokens()){ sb.append(tokenizer.nextToken()).append("\n"); } System.out.print(sb);자바에서 문자열하면 string을 쓰는데
string은 소위 불변객체이다.
즉 str1 + str2를 하면 새로운 string 객체를 계속해서 만들어야함
따라서 string 객체들끼리 더하는 행위는 ㅈㄴ 비효율적이고
새 객체를 만드는데 오버헤드가 있어 ps할때 입출력이 많으면 시간초과날 확률이 높음
그래서 어떻게든 입출력 부분에서 시간을 줄여야한다
그래서 사용하는게
입력할때는 BufferedReader 출력할때는 StringBuilder를 쓰는 것이다
StringBuilder는 문자열을 더할때
새로운 객체를 생성하는 것이 아니라 기존의 문자열에 더하는 방식을 사용함
그래서 속도도 빠르고 상대적으로 오버헤드가 적다
출력이 필요할때마다 매번 System.out.println이 아닌
StringBuilder에 append로 출력할 결과들을 누적시켜놓은다음
맨 마지막에 한번만 System.out.print(sb)
그동안 누적시켜온 결과물을 출력하기만 하면 된다
'Java' 카테고리의 다른 글
[Java] C++ pair 같은 Map.Entry 사용하기 (0) 2024.02.17 [Java] Vector vs ArrayList vs LinkedList (0) 2024.02.06 [Java] StringTokenizer (2) 2024.01.27 [Java] BufferedReader (1) 2024.01.27 [Java] 자바 설치 (0) 2024.01.04