Merge 연산자는 여러 개의 옵저버블(Observable)을 하나의 옵저버블로 결합하는 연산자입니다.수집된 항목들은 동시에 발행되며, 병합된 스트림에서는 항목들의 순서가 보장되지 않습니다.
뉴진스 리스트를 하나 더 만들어 합쳐보겠습니다.
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())
}