我有一个
Flux
,我想洗牌它的排放。
排放量:
1, 2, 3, ...
我想要:
32, 5, 9, ...
在 Reactor 中有可能吗?
我认为 Reactor 没有为您洗牌的功能,但您可以采取一种解决方法。 如果你想保持上游原样,
Random random = new Random();
Flux.range(1,256)
.flatMap(integer -> Flux.just(integer).delayElements(Duration.ofMillis(random.nextInt(256))))
.subscribe(System.out::println);
}
如果需要随机元素:
Flux.range(1,256)
.map(integer -> random.nextInt(256))
.subscribe(System.out::println)
另一种更优雅的方式是使用
Flux.generate()
发出一个随机值:
Random random = new Random();
Flux.generate(sink -> sink.next(random.nextInt(256)))
.subscribe(System.out::println);