Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 구아바(Guava) Joiner 클래스 완벽 정리 – 문자열 연결하기

구아바(Guava) Joiner 클래스란?

구글에서 제공하는 오픈소스 라이브러리인 구아바(Guava)에는 Joiner라는 유틸리티 클래스가 포함되어 있습니다. 이 클래스는 문자열, 객체, 컬렉션 등을 특정 구분자(delimiter)로 손쉽게 연결할 수 있는 다양한 메서드를 제공합니다.

특히 Joiner를 사용하면 배열이나 리스트에 null 값이 포함되어 있어도 안전하게 처리할 수 있다는 점이 큰 장점입니다. 일반적인 String.join() 방식과 달리, null 값을 건너뛰거나 다른 문자열로 대체하는 유연한 처리가 가능합니다.

예제 코드

다음 예제에서는 null 값을 포함한 문자열 배열을 '+' 구분자로 연결하는 과정을 보여줍니다.

import com.google.common.base.Joiner;
import java.util.*;

public class Demo {
    public static void main(String[] args) {
        String[] my_arr = { "hel", null, "lo", "wo", "r", null, "ld" };
        System.out.println("원본 배열 : " + Arrays.toString(my_arr));
        
        String my_result = Joiner.on('+').skipNulls().join(my_arr);
        System.out.println("연결된 문자열 : " + my_result);
    }
}

실행 결과

원본 배열 : [hel, null, lo, wo, r, null, ld]
연결된 문자열 : hel+lo+wo+r+ld

코드 설명

Demo라는 이름의 클래스 내부에 메인(main) 함수가 정의되어 있으며, 여기서 하나의 문자열 배열을 선언합니다. 이 배열에는 일반 문자열 요소와 함께 null 값 두 개가 섞여 있습니다.

핵심은 Joiner.on('+') 부분입니다. 이 코드는 구분자를 '+'로 지정하여 Joiner 인스턴스를 생성하고, skipNulls() 메서드를 호출해 null 값을 무시하도록 설정합니다. 마지막으로 join(my_arr)를 호출하면 null이 제거된 상태로 나머지 문자열들이 '+'로 연결됩니다.

그 결과, 원본 배열의 null 값들은 모두 제거되고 hel+lo+wo+r+ld라는 깔끔한 문자열이 콘솔에 출력됩니다.

Joiner 클래스의 주요 메서드

  • on(char/String): 구분자를 지정하여 Joiner 인스턴스를 생성합니다.
  • skipNulls(): 연결 과정에서 null 값을 건너뜁니다.
  • useForNull(String): null 값을 지정한 문자열로 대체합니다. (단, skipNulls()와 함께 사용할 수 없습니다.)
  • join(Iterable/Iterator/Object...): 리스트, 배열 등 다양한 형태의 데이터를 연결합니다.
  • withKeyValueSeparator(): Map 객체를 key=value 형태로 연결할 때 사용합니다.

마무리

이처럼 구아바의 Joiner 클래스는 복잡한 반복문 없이도 한 줄의 코드로 문자열 연결 작업을 처리할 수 있게 해주며, null 처리까지 우아하게 해결해 줍니다. 실무에서 로그 생성, CSV 데이터 조합, 동적 쿼리 문자열 작성 등 다양한 상황에서 유용하게 활용할 수 있습니다.