Core Operators: Mapping and Filtering1-to-1 Transformations Using map()Wrapping Up Using flatMap()Postponing Events Using the delay() OperatorOrder of Events After flatMap()Preserving Order Using concatMap()More Than One ObservableTreating Several Observables as One Using merge()Pairwise Composing Using zip() and zipWith()When Streams Are Not Synchronized with One Another: combineLatest(), withLatestFrom(), and amb()Advanced Operators: collect(), reduce(), scan(), distinct(), and groupBy()Scanning Through the Sequence with Scan and ReduceReduction with Mutable Accumulator: collect()Asserting Observable Has Exactly One Item Using single()Dropping Duplicates Using distinct() and distinctUntilChanged()Slicing and Dicing Using skip(), takeWhile(), and OthersWays of Combining Streams: concat(), merge(), and switchOnNext()Criteria-Based Splitting of Stream Using groupBy()Where to Go from Here?Writing Customer OperatorsReusing Operators Using compose()Implementing Advanced Operators Using lift()Summary