Here are all the functional types available in RxJava 1., 2., and 3.0 at the time of writing. You may recognize many of these functional types as being almost identical to those in Java 8 (in the java.util.function package) or Google Guava.
However, they were copied to an extent in RxJava to make them available for use in Java 6, 7, and 8. A subtle difference is that RxJava's implementations throw checked exceptions. This eliminates a pain point from RxJava 1.*, where checked exceptions had to be handled in lambda expressions that yielded them.
In the following table, the RxJava 1.* equivalents are listed as well, but note that the SAM column corresponds to the RxJava 2.* and 3.0 type. Another important point is that RxJava 1* functions implement call() and do not support primitives. Also, RxJava 2.* and 3.0 implements a few functional types with primitives...