Java8 : Map<X, Y> 到 Map<X, Z> 使用 RxJava

标签 java dictionary hashmap rx-java

我知道如何转换 Map<X, Y>Map<X, Z>使用流,它还有一个 previous question对这个。

但我想学习如何使用 RxJava 来实现。

更具体地说:

//Input: 
Map<String,String> in; // map from key to a string number, for example: "10"

//transform: in -> out

//Output:
Map<String,Integer> out; //map from the same key to Integer.parseInt(val) (invariant: val is a string number)

最佳答案

我认为 Dávid Karnok 在某种意义上是正确的,如果您的唯一目标是转换单个 map ,那么对于 RxJava 来说并不是特别有用的情况。 如果您有(多个) map 的 Observable,它可能更有意义。

然后我建议使用便利的 Guava 转换器:https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/Maps.html#transformValues(java.util.Map,%20com.google.common.base.Function)

Map<String,String> source1 = ...
Map<String,String> source2 = ...

Observable.just(source1, source2)
    .map(map->Maps.transformValues(map, v->Integer.parseInt(v)));

Guava 的 map 值转换器的一个好处是它不会重新创建 map 数据结构,而是创建一个转换后的 View ,该 View 可以延迟(动态)映射值。

如果你不想依赖 Guava,你可以简单地实现 Func1<Map<String,String>,Map<String,Integer>>自己。

关于Java8 : Map<X, Y> 到 Map<X, Z> 使用 RxJava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126448/

相关文章:

java - Hibernate + JodaTime 映射不同类型

java - 来自支持 bean 的非空数据列表在 jsf 形式中为空

java - 如何在 Java 项目的 Maven 中组织单元、集成、e2e 测试文件夹结构?

python - 来自文件的动态字典

python - 将字典中的一些字段解析为 CSV 时出错

java - 收集 HashMap<String, List<String>> java 8

java - 如何比较 Hashmap 中的 2 个数组列表?

java - 通过 JDBC 驱动程序连接到 Oracle 数据库

dictionary - Data.Map - 为什么有 `takeWhileAntitone` 但没有 `takeWhile`?

java - 使用什么数据结构?