我有以下用例(這當然是一個人爲的例子,但是一旦我知道答案,我將能夠將它移植到我要解決的實際問題):收集分組的可觀察量的排放到一個列表中
- 獲取整數列表。
- 它們由%4操作的結果
- 收集每個組的元素,以列表
- 忽略任何羣/列表具有比3層的元件更少的元件
- 發射單個列表,其元素爲組步驟#創建的列表3
這裏是我當前的代碼:
Observable
.from(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))
.groupBy(item -> item % 4)
.subscribe(groupedObservable -> {
groupedObservable
.toList()
.filter(list -> list.size() > 2)
.subscribe(result -> {
System.out.printf("%d results %s%n", result.size(), result);
});
});
,其輸出是:
4 results [0, 4, 8, 12]
3 results [2, 6, 10]
3 results [3, 7, 11]
因此,它打印出每個組有多少個元素,然後列出元素列表。我想輸出是(我其實不關心按鍵):
3結果:[[0,4,8,12],[2,6,10],[3,7, 11]]
即某種方式將分組的observables展平成一個列表。我沒有這樣做。例如,在filter
之後添加.flatMap(integers -> Observable.just(integers))
不會改變任何內容,因爲它僅影響每個分組的觀察值,而不影響整個流。有沒有辦法滿足我的要求?
我不知道如果我理解你正確,但這是一個產生你想要的輸出的要點 - https://gist.github.com/nsk-mironov/e13fe46938bf887f174a –
這正是我想要得到的。當你用代碼寫一個答案以便我可以接受它時,我會試着去理解它; d – wujek