[java] RxJava의 데이터 전처리

RxJava는 반응형 프로그래밍을 지원하는 자바 라이브러리로, 데이터 스트림을 다루는데 사용됩니다. 데이터 전처리는 RxJava의 가장 강력한 기능 중 하나이며, 데이터를 원하는 형태로 가공하는 작업을 의미합니다. 이번 포스트에서는 RxJava를 사용하여 데이터 전처리를 어떻게 수행할 수 있는지 알아보겠습니다.

1. 데이터 매핑하기 (map 연산자)

RxJava에서는 map 연산자를 사용하여 데이터를 다른 형태로 변환할 수 있습니다. map 연산자는 각 아이템에 함수를 적용하고, 그 결과를 새로운 스트림으로 반환합니다.

예를 들어, 정수 스트림이 있다고 가정해봅시다. 이 정수들을 2배로 만들고 싶을 때는 map 연산자를 사용하여 아래와 같이 구현할 수 있습니다.

Observable.range(1, 5)
    .map(number -> number * 2)
    .subscribe(System.out::println);

위 코드는 1부터 5까지의 정수를 생성한 뒤, 각 숫자를 2배로 만들어 출력하는 예시입니다.

2. 데이터 필터링하기 (filter 연산자)

때로는 데이터 스트림에서 특정 조건을 만족하는 아이템만 필터링하고 싶을 수 있습니다. 이럴 때는 filter 연산자를 사용하면 됩니다. filter 연산자는 주어진 조건과 일치하는 아이템만을 포함한 새로운 스트림을 반환합니다.

아래 예시는 문자열 배열에서 길이가 5 이상인 문자열만을 출력하는 예시입니다.

Observable.just("apple", "banana", "cherry", "grape", "kiwi")
    .filter(word -> word.length() >= 5)
    .subscribe(System.out::println);

3. 데이터 합치기 (merge 연산자)

때로는 여러 개의 데이터 스트림을 합쳐서 하나의 스트림으로 만들어야 할 때가 있습니다. 이럴 때는 merge 연산자를 사용하면 됩니다. merge 연산자는 여러 개의 옵저버블을 받아서 하나의 옵저버블로 합치는 역할을 합니다.

아래 코드는 두 개의 정수 스트림을 합쳐서 출력하는 예시입니다.

Observable<Integer> numbers1 = Observable.just(1, 2, 3);
Observable<Integer> numbers2 = Observable.just(4, 5, 6);

Observable.merge(numbers1, numbers2)
    .subscribe(System.out::println);

이렇게 merge 연산자를 사용하면 각각의 스트림을 하나로 합치고, 그 결과를 구독자에게 전달합니다.

마무리

이번 포스트에서는 RxJava를 사용하여 데이터 전처리를 하는 방법에 대해 알아보았습니다. map, filter, merge 연산자를 활용하면 데이터를 다루는 유연성과 효율성을 높일 수 있습니다. 이러한 데이터 전처리 기능은 반응형 프로그래밍의 핵심 개념 중 하나이며, 개발자들에게 많은 도움을 주는 기능입니다.