<RxJava>Merge

진섭·2023년 6월 3일
0

RxJava

목록 보기
17/20
post-thumbnail

📌 Merge 연산자란?

Merge 연산자는 여러 개의 옵저버블(Observable)을 하나의 옵저버블로 결합하는 연산자입니다.수집된 항목들은 동시에 발행되며, 병합된 스트림에서는 항목들의 순서가 보장되지 않습니다.

📌 Merge 사용법

뉴진스 리스트를 하나 더 만들어 합쳐보겠습니다.

  • merge(),merge2()는 newJeansList에 있는 NewJeans 객체들을 하나씩 발행하는 옵저버블이 생성합니다.
  • 두 개의 함수를 newJeansMerge() 함수에서 Observable.merge(merge(), mergea2())를 이용해 두 개의 함수를 병합하도록 하겠습니다.
  • 이 newJeansMerge()를 호출하고 subscribe 함수를 사용하여 옵저버블을 구독하고, 각 그룹의 항목에 대한 처리를 수행합니다
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        newJeansMerge()
            .subscribe(
                {
                    Log.d("newJeansMerge", "onNext : ${it}")
                },
                {
                    Log.d("newJeansMerge", "onError ${it}")
                },
                {
                    Log.d("newJeansMerge", "뉴진스 + 뉴진스")
                }
            ).let { _ -> }

    }
}
val newJeansList = mutableListOf<NewJeans>(
    NewJeans(1, "민지", 20),
    NewJeans(2, "하니", 20),
    NewJeans(3, "다니엘", 19),
    NewJeans(4, "해린", 18),
    NewJeans(5, "혜인", 16),
)
val newJeansList2 = mutableListOf<NewJeans>(
    NewJeans(1, "민지2", 20),
    NewJeans(2, "하니2", 20),
    NewJeans(3, "다니엘2", 19),
    NewJeans(4, "해린2", 18),
    NewJeans(5, "혜인2", 16),
)

data class NewJeans
    (
    val id: Long,
    val name: String,
    val age: Int
)

// 기존 뉴진스 리스트
fun merge(): Observable<NewJeans> {
    return Observable.fromIterable(newJeansList)
}
// 합쳐질 뉴진스 리스트
fun mergea2(): Observable<NewJeans> {
    return Observable.fromIterable(newJeansList2)
}
// Observable.merge()를 사용하여 merge(), mergea2()를 병합한다.
fun newJeansMerge(): Observable<Any> {
    return Observable.merge(merge(), mergea2())
}

실행결과

profile
Android 개발자

0개의 댓글