我希望这个小例子打印出所有可被3整除的数字。
@Test
public void test() {
Observable.range(1, 100)
.groupBy(n -> n % 3)
.toMap(g -> g.getKey())
.flatMap(m -> m.get(0))
.subscribe(System.out::println);
}
println
不会打印任何内容,我也不知道为什么。我将这个示例从一个更复杂的示例中简化了下来,我知道可以用另一种方式完成此操作,但是我需要这种方式,因为有更多的组需要同时在
flatMap
中进行操作。谢谢你的帮助!
最佳答案
使用方法filter(Predicate<? super T> predicate)
而不是groupBy(..)
来发出满足指定谓词的元素。
Observable.range(1, 100)
.filter(n -> n % 3 == 0)
.toMap(g -> g.getKey())
.flatMap(m -> m.get(0))
.subscribe(System.out::println);
Java Stream-API的工作原理相同:
IntStream.range(1, 100).filter(n -> n%3 == 0).forEach(System.out::println);
// prints 3, 6, 9, 12... on the each line