RxJava Operator – Concat and Merge
RxJava is the most significant library, and it is widely used by Android developers. It simplifies our lives. RxJava is used for multithreading, managing background processes, and eliminating callback hells. RxJava allows us to address a wide range of complicated use-cases. It allows us to accomplish complex things in a very easy way. It gives us the ability. And as the saying from your superhero movie goes: With great powers, comes great responsibility. RxJava contains a plethora of operators. We must be aware of them in order to use them appropriately. The Concat and Merge Operators will be covered in this section.
The Concat
It concatenates the emissions of two or more Observables without interleaving them. While emitting the items, it will keep the order of the observables. That is, it will emit all of the things in the first observable, then all of the items in the second observable, and so on.
Diagram 1. Explaining Concatenate
Let’s have a look at an example to help you understand:
Java
final String[] gfgList = { "DSA" , "Py" , "Android" , "Java" };
final String[] gfgListTwo = { "Intern" , "FullTime" , "PartTime" };
final Observable<String> gfgObs1 = Observable.fromArray(gfgList);
final Observable<String> gfgObs2 = Observable.fromArray(gfgListTwo);
Observable.concat(gfgObs1, gfgObs2)
.subscribe( new Observer<String>() {
@Override public void onSubscribe(Disposable d)
{
}
@Override public void onNext(String value)
{
}
@Override public void onError(Throwable e)
{
}
@Override public void onComplete()
{
}
});
|
Output:
Because we are using the Concat Operator, the order will be preserved and the values will be emitted as:
DSA, Py, Android, Java, Intern, FullTime, PartTime.
The Merge
It merges the emissions of multiple Observables to create a single Observable. It will not keep the order while emitted things.
Diagram 2. Explaining Merge.
Now, like concatenate let’s look at an example:
Java
final String[] gfgList = { "DSA" , "Py" , "Android" , "Java" };
final String[] gfgListTwo = { "Intern" , "FullTime" , "PartTime" };
final Observable<String> gfgList = Observable.fromArray(gfgList);
final Observable<String> gfgListTwo = Observable.fromArray(gfgListTwo);
Observable.merge(gfgList, observableSecond)
.subscribe( new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String value) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
|
Output:
Because we are using the Merge Operator, the values can be emitted in any sequence, such as:
DSA, Android, Intern, Java, FullTime, Py, PartTime
or
PartTime, Java, FullTime, Android, DSA, Intern, Py
or anything.
Conclusion
This was all for this article, hope it helped you understand how both methods differ, depending on our use-case, we should utilize the Concat and Merge operators in RxJava.
Last Updated :
11 Aug, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...