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를 활용한다.