In this chapter, we had a chance to cover lots of basic and advanced material. Even though we used .flatMap() earlier, only now did we get the chance to delve in depth to clarify what it exactly does.
Additionally, we covered things such as .switchMap(), which is closely related to .flatMap(), and we learned how to use tuples and custom classes to transport relevant data from one part of an Observable to another.
Finally, we implemented filtering for financial stock updates with the .filter(), .groupBy(), and .distinct() calls. The Twitter stream was optimized as well to skip tweets that do not contain the keywords that we are monitoring.