使用RxJava2或RxKotlin进行For循环

时间:2018-02-01 19:43:37

标签: android for-loop android-asynctask rx-java2 rx-kotlin2

我想构建一个异步操作,迭代给定字符串中的字符。我有一个由"mystring".toCharArray()拍摄的字符数组。我想使用RX迭代每个第10个字符。

我知道我可以用AsyncTask和for循环来做,但我认为RX会更优雅的解决方案。我已阅读documentations,但不知道该怎么做。

我的另一个想法是在for循环中创建PublishSubject并触发onNext(),索引会在订阅时增加10。

PS:"mystring"可以像json,xml等更大一些。请随时评论ram profiling。

1 个答案:

答案 0 :(得分:3)

RxJava不支持原始数组,但您可以使用range运算符形式的for循环并将其索引到基本数组中。使用一些索引算法,您可以轻松获得每个第10个字符:

char[] chars = ...

Observable.range(0, chars.length)
    .filter(idx -> idx % 10 == 0)
    .map(idx -> chars[idx])
    .subscribe(System.out::println);