There is no real use of reactive programming in the above example you've given. It gets the job done in a different way.
The real advantage of reactive programming kicks in, when you are working with streams of data and you want to do operations on them in a simple and effective manner which you can run on your preferred thread. Reactive programming has lots of operators which scares a novice programmer, but once you learn the basics it will become easier to understand which operator suits your needs.
Have a look at this article Simple background polling with RxJava and think of how to obtain the same in plain java with few lines of code.
I always preferred more lines of code. My defence was that more lines of code means more easier to comprehend. But once you start working on big projects with a huge team, it becomes difficult to understand the codebase.
Below which among the two is more understandable?
take(10);
OR
int limit = list.size() < 10 ? list.size() : 10;
for (int i = 0 ; i < limit ; i ++) {
Log.d("Value", list.get(i));
}
Both gets first 10 items in the list. If the list is smaller then it gets the total size.