Cor*_*hin 4 java rx-java reactivex rx-java2
我正在尝试在 RxJava2 中实现一个简单的滑动窗口函数,但正在努力做我想做的事。
我的目标是获取对象流,即
["a", "b", "c", "d", "e"]
Run Code Online (Sandbox Code Playgroud)
并应用一个滑动窗口,它将返回与每个元素相邻的元素。
即导致:
["a", "b"]
["a", "b", "c"]
["b", "c", "d"]
["c", "d", "e"]
["d", "e"].
Run Code Online (Sandbox Code Playgroud)
IE
a----------------b----------------c----------------d----------------e
? ? ? ? ?
? ? ? ? ?
? ? ? ? ?
? ? ? ? ?
["a", "b"] ["a", "b", "c"] ["b", "c", "d"] ["c", "d", "e"] ["d", "e"]
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚如何做到这一点。Google Groups 帖子似乎走在正确的轨道上,但并没有得到我需要的结果:https : //groups.google.com/forum/#!topic/rxjava/k-U5BijXinU
有任何想法吗?
取决于您是否希望您的 observable 发出List<Item>或Observable<Item>您可以使用buffer()或window()运算符。解决方案不是那么干净,但非常简单:
Observable.fromArray("a", "b", "c", "d", "e")
.startWith("")
.buffer(3, 1)
.map(strings -> {
strings.remove("");
return strings;
})
.filter(strings -> strings.size() > 1)
Run Code Online (Sandbox Code Playgroud)
返回
["a", "b"]
["a", "b", "c"]
["b", "c", "d"]
["c", "d", "e"]
["d", "e"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |