Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

RxJava Operator – Concat and Merge

  • Last Updated : 11 Aug, 2021

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.

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

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)
        {
            // Your Code
        }
        @Override public void onNext(String value)
        {
            // Your Code
        }
        @Override public void onError(Throwable e)
        {
            // Your Code
        }
        @Override public void onComplete()
        {
            // Your Code
        }
  });

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) {
                // Your Code
            }
  
            @Override
            public void onNext(String value) {
                // Your Code
            }
  
            @Override
            public void onError(Throwable e) {
                // Your Code
            }
  
            @Override
            public void onComplete() {
                // Your Code
            }
        });

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!