RxJava Merge Vs Concat operators

Avinash Reddy
2 min readOct 12, 2021

--

Hello All, Before going to learn difference between concat and merge , lets have a look at what is the difference between the concatenate and merge in English . This makes very easy for us to understand them in RxJava.

Concatenate : link (things) together in a chain or series.

Merge : combine or cause to combine to form a single entity.

If we observe the meanings , concatenate specifically mentions that linking things in chain or series.

Now lets have a look at RxJava merge operator

Merge :

private fun mergeArrays() {
val observableElement = Observable.fromArray("Element1", "Element2", "Element3", "Element4")
val observableItem = Observable.fromArray("item1", "item2", "item3", "item4")

Observable.merge(observableA, observableB)
.subscribe(getObserver())
}
Output : Emits the values in below orderelement1,item1,element2,element3,item2,item3Merge does not maintain the order of the observables.Order of elements is not guaranteed.
Merge operation

Now lets have a look and concat operator and figure out how it is different from merge operator.

Concat :

private fun mergeArrays() {
val observableElement = Observable.fromArray("Element1", "Element2", "Element3", "Element4")
val observableItem = Observable.fromArray("item1", "item2", "item3", "item4")

Observable.concat(observableA, observableB)
.subscribe(getObserver())
}
Output : Emits the values in below orderelement1,element2,element3,item1,item2,item3Concat maintains the order of observables. Order of elements is guaranteed.
Concat operation

Hence we can observe that concat maintains the order of the observables where as merge does not maintain the order of the observables.

--

--