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에서 데이터의 흐름을 표현하고 처리하는데 유용하게 사용됩니다. 사용하는 상황에 따라 적절한 자료구조를 선택하여 프로그래밍을 진행할 수 있습니다.