Với đầu vào:.Làm thế nào để chuỗi nhiều phương pháp RxJava của groupby() như groupby() groupby()
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Tập đoàn số bằng cách lẻ hoặc thậm chí và sau đó bằng cách nhỏ hơn hoặc lớn hơn 5.
Sản lượng mong muốn:
[[1, 3, 5], [2, 4], [6, 8, 10], [7, 9]]
Thứ tự của đầu ra không bị giới hạn.
bây giờ tôi đang sử dụng phương pháp sau đây:
Observable.range(1, 10)
.groupBy(n -> n % 2 == 0)
.flatMap((GroupedObservable<Boolean, Integer> g) -> {
return Observable.just(g).flatMap(ObservableUtils.<Boolean, Integer>flatGroup()).groupBy(n -> n > 5);
})
.subscribe((final GroupedObservable<Boolean, Integer> g) -> {
Observable.just(g).flatMap(ObservableUtils.<Boolean, Integer>flatGroup()).forEach(n -> println(g + ": " + n));
});
Lưu ý rằng ObservableUtils được viết bởi tôi để đơn giản hóa các mã.
Nhưng tôi không hài lòng với nó vì nó vẫn không đủ ngắn để chỉ đơn giản là chỉ mục tiêu.
gì tôi mong đợi là như sau:
Observable.range(1, 10)
.groupBy(n -> n % 2 == 0)
.groupBy(n -> n > 5)
.subscribe(...);
Để bây giờ tôi chỉ có thể thu nhỏ nó:
Observable.range(1, 10)
.lift(new OperatorGroupByGroup(n -> n % 2 == 0))
.lift(new OperatorGroupByGroup(n -> n > 5))
.subscribe(...);
tôi vẫn phải viết lớp OperatorGroupByGroup đó là một chút phức tạp chút. Bất kỳ đề xuất để cải thiện?