java - RxJava 发出不同周期的项目

标签 java android rx-java period

我有一个 HashMap :

    private HashMap<Integer, ArrayList<EmitedItem>> contentHashMap;

每个 EmitedItem 都是

public class EmitedItem {
public int duration;
public String title;}

我必须立即从每个 ArrayList 中获取第一个元素,然后在前一个元素持续一段时间后获取第二个元素。 我不确定如何使用 RxJava

执行此操作

最佳答案

您可以为内部列表中的每个项目构建一个可观察列表,并随着数量的增加而应用延迟:

Map<Integer, List<Item>> map = new HashMap<>();

map.put(1, Arrays.asList(Item.of(0, "A"), Item.of(1, "B"), Item.of(1, "C")));
map.put(2, Arrays.asList(Item.of(0, "D"), Item.of(1, "E")));

List<Observable<Item>> emitter = new ArrayList<>();

for (List<Item> list : map.values()) {
    int time = 0;

    for (Item i : list) {
        time += i.duration;
        emitter.add(Observable.just(i).delay(time, TimeUnit.SECONDS));
    }
}

Observable.merge(emitter).map(v -> v.title)
.toBlocking()
.subscribe(System.out::println);

关于java - RxJava 发出不同周期的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37538939/

相关文章:

java - RxJava : How to retain Thread from upstream

java - Java多线程同步用法

java - MyBatis:如何存储查询中的多个值?

Android AudioRecord频率过滤器一步一步

android - 可以从 Android 中的 RAM 运行 apk 以获得更高的性能吗?

android - Android 中的 Throttle Subject

android - 为什么不调用 doOnNext()?

java - Android应用程序无法连接到外部apache mysql服务器

java - 如何使用 apache james 电子邮件服务器将邮件发送到 gmail

android - 如何在依赖于应用程序帐户而不是 Google Play 帐户的应用程序购买中实现