[java] RxJava의 자료구조 처리

RxJava는 자바에서 반응형 프로그래밍을 구현하기 위한 라이브러리입니다. 이 라이브러리를 사용하면 비동기적이고 이벤트 기반의 프로그래밍을 쉽게 할 수 있습니다. RxJava는 Stream 형태의 데이터를 처리하는데 많은 도움을 주는 다양한 자료구조를 제공합니다.

Observable

Observable은 데이터의 흐름을 표현하는 RxJava의 핵심 자료구조입니다. Observable은 데이터를 생성하고 이를 구독자에게 전달합니다. Observable은 create() 메서드를 사용하여 생성할 수 있습니다.

Observable<String> observable = Observable.create(emitter -> {
    emitter.onNext("Data 1");
    emitter.onNext("Data 2");
    emitter.onNext("Data 3");
    emitter.onComplete();
});

Flowable

Flowable은 Observable의 확장된 버전으로, 백 프레셔(back-pressure)를 지원합니다. 백 프레셔는 데이터 생산과 소비의 속도를 동기화하여 메모리 오버플로우를 방지하는 기능입니다. Flowable은 create() 메서드 대신 generate() 메서드를 사용하여 생성할 수 있습니다.

Flowable<String> flowable = Flowable.generate(emitter -> {
    emitter.onNext("Data 1");
    emitter.onNext("Data 2");
    emitter.onNext("Data 3");
    emitter.onComplete();
});

Single

Single은 오직 하나의 데이터를 생성하는 Observable입니다. Single은 just() 메서드를 사용하여 생성할 수 있습니다. 생성된 Single은 subscribe() 메서드를 통해 구독됩니다.

Single<String> single = Single.just("Data");

Maybe

Maybe는 데이터를 생성하지 않거나 하나의 데이터를 생성하는 Observable입니다. Maybe는 create() 메서드를 사용하여 생성할 수 있습니다.

Maybe<String> maybe = Maybe.create(emitter -> {
    boolean hasData = true;
    if (hasData) {
        emitter.onSuccess("Data");
    } else {
        emitter.onComplete();
    }
});

Completable

Completable은 데이터를 생성하지 않고 작업의 성공 여부만을 알리는 Observable입니다. Completable은 complete() 메서드를 사용하여 생성할 수 있습니다.

Completable completable = Completable.complete();

위에서 소개한 다양한 자료구조는 RxJava에서 데이터의 흐름을 표현하고 처리하는데 유용하게 사용됩니다. 사용하는 상황에 따라 적절한 자료구조를 선택하여 프로그래밍을 진행할 수 있습니다.

참고 자료