0. 서론
간혹 문자열 중간 공백을 넣거나 쉼표를 넣어주는 경우, 코드가 번잡해지는 경향이 있다.
이 때, StringJoiner를 이용하면 손쉽게 구현이 가능하다.
StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
delimiter: 구분자
prefix: 접두사
suffix: 접미사
1. 사용법
1-1. 기본 사용법
구분자만 사용했을 때,
List<String> list = List.of("Andrew", "Brian", "Chris", "Daniel", "Emily");
StringJoiner stringJoiner = new StringJoiner(", ");
for (String name : list) {
stringJoiner.add(String.valueOf(name));
}
String string = stringJoiner.toString()
System.out.println(string); //Andrew, Brian, Chris, Daniel, Emily
구분자와 접두사, 접미사를 모두 사용했을 때,
List<String> list = List.of("Andrew", "Brian", "Chris", "Daniel", "Emily");
StringJoiner stringJoiner = new StringJoiner(", ", "<", ">");
for (String name : list) {
stringJoiner.add(String.valueOf(name));
}
String string = stringJoiner.toString()
System.out.println(string); //<Andrew, Brian, Chris, Daniel, Emily>
1-2. String.join을 활용한 사용법
생성하려는 문자열이 String으로 이루어져있다면 아래 방식으로 하는 것이 더욱 간단하다.
단, 접두사와 접미사는 추가하고 싶다면 1-3 방식을 활용해야 한다.
List<String> list = List.of("Andrew", "Brian", "Chris", "Daniel", "Emily");
String string = String.join(", ", list)
System.out.println(string); //Andrew, Brian, Chris, Daniel, Emily
1-3. Stream을 활용한 사용법
Stream을 활용하면 간결하게 표현이 가능하다.
접두사와 접미사도 사용이 가능하다.
List<Integer> list = List.of(1, 2, 3, 4, 5);
//구분자만 사용
String string_1 = list.stream()
.map(Object::toString)
.collect(Collectors.joining(", "));
System.out.println(string_1); //1, 2, 3, 4, 5
//구분자와 접두사, 접미사를 모두 사용
String string_2 = list.stream()
.map(Object::toString)
.collect(Collectors.joining(", ", "<", ">"));
System.out.println(string_2); //<1, 2, 3, 4, 5>
2. 참고
https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html
반응형