无限可观测到HashMap作为可观测
我仍在努力学习RxJava的一些基础知识,非常感谢您的帮助 我有一个无限的,热可观测的,它在一个简单的类中发出有规则标记的事件捕获,这个类有一个名称标记和一些属性。在这种情况下,标记是有限的,大约有10个不同的标记,但事件的细节每次都是不同的,比如一个时间戳 我现在要做的是创建一个HashMap,标记作为键,事件作为条目,这样HashMap本身就成为一个无限可观察的对象,每次更改都会发出HashMap 到目前为止,我使用了一个Subject来订阅原始的observable并发出HashMap,但我也看到了.toMap方法。然而,我不知道如何在一个无限可观测的源中使用该方法,并随着每次变化而发射。从文件上看,我甚至不清楚这是否可能无限可观测到HashMap作为可观测,hashmap,rx-java,observable,reactive-programming,Hashmap,Rx Java,Observable,Reactive Programming,我仍在努力学习RxJava的一些基础知识,非常感谢您的帮助 我有一个无限的,热可观测的,它在一个简单的类中发出有规则标记的事件捕获,这个类有一个名称标记和一些属性。在这种情况下,标记是有限的,大约有10个不同的标记,但事件的细节每次都是不同的,比如一个时间戳 我现在要做的是创建一个HashMap,标记作为键,事件作为条目,这样HashMap本身就成为一个无限可观察的对象,每次更改都会发出HashMap 到目前为止,我使用了一个Subject来订阅原始的observable并发出HashMap,但
如果不可能,除了使用主题之外,还有其他方法可以达到同样的效果吗?我想保持精简,而且主题似乎很重 这是我的代码,将其转换为地图或可观测的。但我不知道你为什么要这么做
fun <T, K> Observable<T>.toInfiniteMap(keySelector: (T) -> K): Map<K, Observable<T>> {
val map = ConcurrentHashMap<K, Observable<T>>()
this.subscribeOn(Schedulers.newThread())
.doOnNext { println(it) }
.groupBy(keySelector)
.doOnNext { map.put(it.getKey(), it) }
.subscribe()
return map
}
fun <T, K> Observable<T>.toInfiniteMapObservable(keySelector: (T) -> K):
Observable<Map<K, Observable<T>>> {
val map = ConcurrentHashMap<K, Observable<T>>()
return this.subscribeOn(Schedulers.newThread())
.doOnNext { println(it) }
.groupBy(keySelector)
.doOnNext { map.put(it.getKey(), it) }
.map { map }
}
你想要一张地图还是一张可观察的地图?如果您希望可观察,可以使用groupBy。如果需要地图,可以将GroupedObservable收集到地图。