Цикл For с RxJava2 или RxKotlin
Я хочу построить асинхронную операцию, которая повторяет символы в заданной строке. У меня есть массив символов, взятый "mystring".toCharArray()
, Я хочу повторить каждый 10-й символ с помощью RX.
Я знаю, что могу сделать это с помощью AsyncTask и for- loop, но я думал, что RX будет более элегантным решением. Я прочитал документацию, но не узнал, как это сделать.
В моей голове еще одна идея - создать PublishSubject и запустить onNext()
в цикле for этот индекс увеличивается на 10 при подписке.
PS: "mystring"
может быть намного больше, как json, xml или т. д. Пожалуйста, не стесняйтесь комментировать о профилировании оперативной памяти.
1 ответ
RxJava не поддерживает примитивные массивы, но вы можете использовать цикл for в виде range
оператор и индекс в примитивный массив. С некоторой индексной арифметикой вы можете легко получить каждый 10-й символ:
char[] chars = ...
Observable.range(0, chars.length)
.filter(idx -> idx % 10 == 0)
.map(idx -> chars[idx])
.subscribe(System.out::println);