Цикл 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);
Другие вопросы по тегам