더북(TheBook)

String.join() 메서드를 활용하는 방법도 있다. 이 메서드는 자바 8에 처음 소개되었으며 종류가 다음 두 가지다.

String join(CharSequence delimiter, CharSequence... elems)
String join(CharSequence delimiter, Iterable<? extends CharSequence> elems)

다음과 같이 공백으로 구분된 여러 문자열을 합친다.

String result = String.join(" ", "how", "are", "you"); // how are you

뿐만 아니라 자바 8 스트림과 Collectors.joining()도 유용하다.

public static String joinByDelimiter(char delimiter, String... args) {
  return Arrays.stream(args, 0, args.length)
    .collect(Collectors.joining(String.valueOf(delimiter)));
}

TIP ≣ += 연산자와 concat(), String.format() 메서드로 문자열을 이어 붙일 때 주의해야 한다. 여러 문자열을 합칠 수는 있으나 성능 저하가 발생하기 쉽다. 예를 들어 다음 코드는 += 연산자를 사용하는데, StringBuilder를 쓸 때보다 훨씬 느리다.

String str = "";
for(int i = 0; i < 1_000_000; i++) {
  str += "x";
}

+=는 한 문자열에 추가한 다음 새로운 문자열로 재구성하는데, 이때 시간이 걸린다.

외부 라이브러리 지원을 받으려면 아파치 커먼즈 랭의 StringUtils.join()과 구아바의 Joiner를 활용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.