[java] RxJava에서의 데이터 스트림 변환

RxJava은 리액티브 프로그래밍을 구현하기 위한 자바 라이브러리입니다. 이 라이브러리를 사용하면 비동기적이고 이벤트 기반의 프로그래밍을 간편하게 구현할 수 있습니다. 이 중에서도 데이터 스트림을 변환하는 기능은 매우 유용합니다.

RxJava에서는 다양한 연산자를 제공하여 데이터 스트림을 변환할 수 있습니다. 이러한 연산자는 데이터를 가공하거나 선택하는 등 여러 가지 작업을 할 수 있게 해줍니다.

Map 연산자

가장 기본적인 데이터 스트림 변환 연산자는 map입니다. 이 연산자를 사용하면 데이터 스트림의 항목들을 원하는 형태로 변환할 수 있습니다. 예를 들어, 정수형 데이터 스트림이 있다고 가정해봅시다. 이 데이터 스트림의 각 항목을 제곱하여 새로운 정수형 데이터 스트림을 생성하고 싶다면 다음과 같이 map 연산자를 사용할 수 있습니다.

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

Observable<Integer> squaredStream = originalStream
    .map(num -> num * num);

squaredStream.subscribe(System.out::println);

위의 예제에서 originalStream은 원래의 데이터 스트림이고, squaredStreammap 연산자를 사용하여 각 항목을 제곱한 데이터 스트림입니다. subscribe 메소드를 사용하여 데이터 스트림의 항목을 출력하고 있습니다. 따라서 결과는 1, 4, 9, 16, 25가 출력됩니다.

Filter 연산자

map 연산자와 함께 많이 사용되는 연산자 중 하나는 filter입니다. filter 연산자를 사용하면 데이터 스트림에서 특정 조건을 만족하는 항목만을 선택할 수 있습니다. 예를 들어, 정수형 데이터 스트림이 있을 때 3의 배수인 항목들만 선택하여 새로운 데이터 스트림을 생성하고 싶다면 filter 연산자를 사용할 수 있습니다.

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

Observable<Integer> filteredStream = originalStream
    .filter(num -> num % 3 == 0);

filteredStream.subscribe(System.out::println);

위의 예제에서 originalStream은 원래의 데이터 스트림이고, filteredStreamfilter 연산자를 사용하여 3의 배수인 항목들만 선택한 데이터 스트림입니다. subscribe 메소드를 사용하여 데이터 스트림의 항목을 출력하고 있습니다. 따라서 결과는 3, 6이 출력됩니다.

그 밖의 연산자

RxJava에는 많은 다른 데이터 스트림 변환 연산자가 있습니다. 그 중 몇 가지 예를 들어보면 다음과 같습니다.

이 외에도 많은 다른 연산자들이 있으며, 각 연산자의 사용법과 기능을 자세히 알아보려면 RxJava 공식 문서를 참고하시기 바랍니다.

결론

RxJava를 사용하여 데이터 스트림을 변환하는 것은 매우 유용한 기능입니다. map, filter를 비롯한 다양한 연산자를 사용하면 데이터 스트림을 원하는 형태로 가공하거나 선택할 수 있습니다. 이를 통해 비동기적이고 유연한 프로그래밍을 구현할 수 있습니다.

참고 자료: