Android 将可观察列表更改为Hashmap Singleton

Android 将可观察列表更改为Hashmap Singleton,android,rx-java,retrofit2,Android,Rx Java,Retrofit2,我有一个单例来缓存对象,从这里我从一个列表中创建了一个可观察的对象,这个列表是API的一个响应,其中填充了对象。(JSON) 私有静态行为Subject Observable模型列表; private static Observable=myAPI.loadModelsRx(); 私有静态订阅; 私人泊辛格尔顿(){ } 公共静态PoiSingleton getInstance(){ 回归自然状态; } 公共静态无效重置可观察(){ ObservablePostList=BehaviorSubj

我有一个单例来缓存对象,从这里我从一个列表中创建了一个可观察的对象,这个列表是API的一个响应,其中填充了对象。(JSON)

私有静态行为Subject Observable模型列表;
private static Observable=myAPI.loadModelsRx();
私有静态订阅;
私人泊辛格尔顿(){
}
公共静态PoiSingleton getInstance(){
回归自然状态;
}
公共静态无效重置可观察(){
ObservablePostList=BehaviorSubject.create();
if(subscription!=null&&!subscription.isunsubscripted()){
订阅。取消订阅();
}
订阅=可观察的。订阅(新订阅方(){
@凌驾
未完成的公共无效(){
//无所事事
}
@凌驾
公共无效申报人(可丢弃的e){
ObserviePislist.onError(e);
}
@凌驾
public void onNext(列出型号){
ObservablePostList.onNext(模型);
}
});
}
公共静态可观察getPoisObservable(){
如果(ObservablePostList==null){
重置可观察();
}
返回观察列表;
}
我想要实现的是从列表中创建一个HashMap,键应该是对象的ID和对象本身的值


我是Android新手,对/RxJava进行了改进,那么它在什么方法/阶段负责创建HashMap?

尝试
Observable.map()
Operator使用
.flatmapetable(I->I).toMap(Poi::getKey,Poi::getValue)
在订阅调用之前。@TassosBassoukos在Observable或observableModelsList上?尝试
Observable.map()
operator在subscribe调用之前使用
.flatMapIterable(i->i).toMap(Poi::getKey,Poi::getValue)
。@TassosBassoukos在observable或observableModelsList上?
 private static BehaviorSubject<List<Model>> observableModelsList;
    private static Observable<List<Model>> observable = myAPI.loadModelsRx();
    private static Subscription subscription;
    private PoiSingleton() {
    }

    public static PoiSingleton getInstance() {
        return ourInstance;
    }

    public static void resetObservable() {
        observablePoisList = BehaviorSubject.create();

        if (subscription != null && !subscription.isUnsubscribed()) {
            subscription.unsubscribe();
        }
        subscription = observable.subscribe(new Subscriber<List<Model>>() {
            @Override
            public void onCompleted() {
                // do nothing
            }

            @Override
            public void onError(Throwable e) {
                observablePoisList.onError(e);
            }

            @Override
            public void onNext(List<Model> models) {
                observablePoisList.onNext(models);
            }
        });
    }


    public static Observable<List<Poi>> getPoisObservable() {
        if (observablePoisList == null) {
            resetObservable();
        }
        return observablePoisList;
    }