【问题标题】:Rx Java parsing a List to RealmListRx Java 将 List 解析为 RealmList
【发布时间】:2017-04-13 08:48:04
【问题描述】:

所以,这是我的代码:

@Override
public RealmList<RealmStuff> call(List<Stuff> stuff) {
    return Observable.from(stuff)
            .map(this::getRealmStuff)
            .toList()
            .toBlocking()
            .first();
}

这很好。但是我想获得一个 RealmList。 我怎样才能做到这一点? 我应该使用平面地图并使用老式的 for-each 并将项目逐个添加到新的 RealmList 中吗?

可能是这样的:

    .map(realmStuff -> new RealmList<>(realmStuff.toArray(new RealStuff[realmStuff.size()])))

但这对我来说看起来很疯狂......还是只是我?

【问题讨论】:

  • 好吧,如果该方法的目的只是将List 转换为RealmList,我认为使用响应式方法没有任何好处。
  • 通常在使用 Rx 时,您会通过整个链传递 Observable,以从异步和面向推送的特性中受益。如果您只想进行串行或并行计算,那么您可以查看Java 8 Streams
  • RxJava 不是 Stream Api,不应该这样使用。经验法则:如果你在 rx 链中使用 toBlocking() 可能你做错了什么。

标签: realm rx-java realm-list tolist


【解决方案1】:

如果您真的想为此使用RxJava,您可以使用collect 运算符:

//pseudocode
Observable.from(stuff)
    .collect(() -> {
            return new RealmList(); //list initialization
        }, (realmList, stuffItem) -> {
            realmList.add(stuffItem); //adding each item to list
        }
    ).blockingGet()

但反应式方法在这里是多余的,只需使用常规的 forEach 循环即可。

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多