공부를 하다가 누가 Collectors.joining()을 사용하는 것을 보고 무엇인지 궁금해졌다.
오늘은 Collectors.joining()에 대해 정리해 보고자 한다.
Collectors.joining()은 Java의 스트림(Stream)을 사용하여 문자열을 결합하는 Collectors 유틸리티 메서드 중 하나이다.
이 메서드는 스트림 요소를 하나의 문자열로 결합할 때 사용한다.
예를 들면, 스트림에 있는 문자열 요소를 모두 연결하거나, 구분 문자열을 포함한 하나의 문자열로 결합할 수 있다.
사용시에는
import java.util.stream.Collectors;
import java.util.stream.Stream;
두가지를 import 해야한다.
아니면 [ import java.util.*; ]로 하나만 import 해주어도 된다.
1. Collectors.joining()
Collectors.joining() 메서드는 Collector 입력요소를 단일 문자열로 연결한다.
1) 아래는 원시 문자 배열을 문자열로 변환하는 예제이다.
import java.util.*;
class Main{
public static void main(String[] args){
char[] charArray = { 'J', 'a', 'v', 'a' };
String string = Stream.of(charArray) // Stream<char[]>
.map(arr -> new String(arr)) // Stream<String>
.collect(Collectors.joining());
System.out.println(string);
}
}
//출력
//Java
2) 아래는 목록을 문자열로 변환하는 예제이다.
import java.util.*;
class Main{
public static void main(String[] args){
// `Character` 목록을 문자열로 변환
List<Character> chars = Arrays.asList('J', 'a', 'v', 'a');
String string = chars.stream() // Stream<Character>
.map(String::valueOf) // Stream<String>
.collect(Collectors.joining());
System.out.println(string);
}
}
//출력
//Java
혹은 아래와 같이 쓸 수도 있다.
import java.util.*;
class Main{
public static void main(String[] args){
// `Character` 목록을 문자열로 변환
List<Character> chars = Arrays.asList('J', 'a', 'v', 'a');
StringBuilder sb = new StringBuilder();
for (Character character : chars) {
sb.append(character);
}
String string = sb.toString();
System.out.println(string);
}
}
//출력
//Java
2. Collectors.joining(delimiter)
구분 문자열을 포함하여 문자열을 하나로 연결할 수도 있다.
이때는 delimiter로 구분 문자열을 추가하여 작성하면 된다.
예제1)
import java.util.*;
class Main{
public static void main(String[] args){
List<String> colors = Arrays.asList("RED", "BLUE", "BLACK", "GREEN");
// 요소를 문자열로 변환하고 쉼표로 구분하여 연결
String joined = colors.stream().collect(Collectors.joining(", "));
System.out.println(joined);
}
}
//출력
//RED, BLUE, BLACK, GREEN
예제2)
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main{
public static void main(String[] args) {
Stream<String> strings = Stream.of("Hello", "World", "Java");
// Collectors.joining()을 사용하여 스트림의 요소를 결합
String result = strings.collect(Collectors.joining(", "));
System.out.println(result); // "Hello, World, Java"
}
}
//출력
//"Hello, World, Java"
3. Collectors.joining(delimiter, prefix, suffix)
구분 문자열로 구분된 입력요소를 지정된 접두사와 접미사로 연결할 수도 있다.
delimiter : 구분 문자열 입력
prefix : 접두사 입력
suffix : 접미사 입력
import java.util.*;
class Main{
public static void main(String[] args){
List<String> colors = Arrays.asList("RED", "BLUE", "BLACK", "GREEN");
String joined = colors.stream().collect(Collectors.joining(", ", "{", "}"));
System.out.println(joined);
}
}
//출력
//{RED, BLUE, BLACK, GREEN}
다음과 같이 쓸 수도 있다.
import java.util.*;
class Main{
public static void main(String[] args){
List<String> colors = Arrays.asList("RED", "BLUE", "BLACK", "GREEN");
StringJoiner joiner = new StringJoiner(", ", "{", "}");
for (String color : colors) {
joiner.add(color);
}
String joined = joiner.toString();
System.out.println(joined);
}
}
//출력
//{RED, BLUE, BLACK, GREEN}
참고
'Language > Java' 카테고리의 다른 글
[Java] JDBC와 Connection poll (1) | 2023.11.14 |
---|---|
[Java] equals() 메소드와 == 연산자의 차이 (1) | 2023.11.11 |
[Java] 접두사, 접미사인지 확인 / startsWith(), endsWith() (0) | 2023.11.05 |
[Java] 문자열을 숫자로 변환 / Integer.parseInt(), Interger.valueOf() (0) | 2023.11.04 |
[Java] 문자열을 공백으로 분리해서 단어 배열 얻기 / split, .trim().split("\\s+") (0) | 2023.11.02 |