gpt4 book ai didi

java - 使用 takeWhileWithIndex 迭代索引数组,然后发出可观察值

转载 作者:行者123 更新时间:2023-11-30 08:02:52 24 4
gpt4 key购买 nike

我有一个数字列表,每个数字代表一个索引。我想逐一浏览该列表,并为每个数字发出一个可观察值。

我怎样才能做到这一点?

我有这个片段,但我无法理解如何继续...

List<Short> seats = Arrays.asList(new Short[]{0,2,3,1});
rx.Observable.from(seats).takeWhileWithIndex((seatIdx, idx) -> {
// Here I would like to emit an Observable
updateGame(seatIdx, idx == 0 ? true : false)
.subscribe(results -> {
System.out.println(results);
});
return !seats.isEmpty();
}).subscribe();

一定有更好的方法来做到这一点......

如果你有什么想法...谢谢!

编辑

我想更进一步,在省略 4 次迭代的循环(我不关心其结果)之后,我想继续该链并连接更多的 Observables。

List<Short> seats = Arrays.asList(new Short[]{0,2,3,1});
rx.Observable.range(0, seats.size())
.zipWith(seats, (idx, seatIdx) -> {
return updateGame(seatIdx, idx == 0 ? true : false);
})
.takeLast(1)
.flatMap(x -> x)
.concatWith(calculatePayout(...))
.concatWith(persistGame(...))
.subscribe(results -> {
System.out.println(results);
}, e -> {

}, () -> {
System.out.println("COMPLETED");
});

注意,我使用“takeLast(1)”以避免调用“calculatePay”4 次! - 有更优雅的方法吗?

最佳答案

zipIterable 可以满足您的需求:

List<Short> seats = Arrays.asList(new Short[]{0,2,3,1});
Observable.range(0, seats.size())
.zipWith(seats,
(idx, seatIdx) ->
updateGame(seatIdx, idx == 0 ? true : false))
.flatMap(x -> x)
.doOnNext(System.out::println)
.subscribe();

关于java - 使用 takeWhileWithIndex 迭代索引数组,然后发出可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31622332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com