RXJava operate on exiting List instead of creating new
You're just abusing the library here. What you're doing can be done significantly more succinctly in standard java API:
public void sortDishes(int categoryId, List&lt;Dish&gt; dishes) {
    final Set&lt;Integer&gt; categories = new HashSet&lt;Integer&gt;();
    categories.add(categoryId);
    final Integer[] subCategories = dbInteractor.getSubCategories(categoryId);
    if (subCategories != null) {
        categories.addAll(Arrays.asList(subCategories));
    }

    final List&lt;Dish&gt; sortedDishes = dishes.stream()
        .filter(d -&gt; categoryHelper.getCategories(d.getCategories())
                         .stream().anyMatch(categories::contains))
        .sort()
        .collect(Collectors.toList());
}

Note that this corrects a typo in getCategorys.

Further notes
Your dbInteractor's API could use a rework. I generally advocate against returning null from APIs that return a collection of elements, whether that's an Array or an actual Collection subclass.
I strongly suggest you consider returning new Integer[0] or even Collections.emptyList() because this will greatly simplify calling code by guaranteeing you're not returning null.
I also don't understand why the method is typed void. Either you actually modify the List you've received or you return a new List.