【问题标题】:Transform HashMap values using RxJava使用 RxJava 转换 HashMap 值
【发布时间】:2016-05-01 19:32:42
【问题描述】:

是否有某种方式,我的意思是使用 rx 运算符来转换每个 HashMap 值(将 hashmap 键设置为值字段)并进入新的 Hashmap 或 ArrList?

Observable<HashMap<String,Allergy>> observable = MyREST.getsAllergiesApi().getAllAllergiesRx();
    observable
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .unsubscribeOn(Schedulers.io())
            .subscribe(new Subscriber<HashMap<String, Allergy>>() {
                @Override
                public void onCompleted() {
                    Log.i(TAG,"onCompleted");
                }

                @Override
                public void onError(Throwable e) {
                    Log.i(TAG,"onError");
                }

                @Override
                public void onNext(HashMap<String, Allergy> allergies) {

                    mView.displayAllergies(allergies);
                    Log.i(TAG,"onNeXt");
                }
            });

【问题讨论】:

    标签: android rx-java observable rx-android subscriber


    【解决方案1】:

    您可以在 map 中使用任何经典转换,或者您可以展平、映射和收集值。

    Observable<Map<String, Allergy>> source = ...
    
    source.map(map -> {
        HashMap<Allergy, Allergy> newMap = new HashMap<>();
        for (Allergy a : map.values()) {
            newMap.put(a, a);
        }
        return newMap;
    })
    .subscribe(...)
    
    source.flatMapIterable(map -> map.values())
    .toMap(v -> v)
    .subscribe(...)
    

    【讨论】:

    • 谢谢,我对所有 observable 和 operator 的东西都不熟悉,但看到它的多功能性我真的很惊讶。
    • 你好@DaniloDeQueiroz 你能告诉我最终结果如何吗?
    • 我完全按照@akarnokd 说的做了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2023-01-13
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多