如何使用Java 8中的函数映射将Map<K,V1>转换为另一个Map<K,V2>?
2022-09-03 06:12:13
我想使用Java 8中的函数映射将a转换为另一个,通过两个映射中的键将数据与函数相匹配。您可以假定两个映射具有相同的键。Map<String, Integer>
Map<String, Long>
我尝试了以下方法:
Map<String, Integer> inputData = new HashMap<>();
inputData.put("A",8);
inputData.put("B",7);
inputData.put("C",6);
Map<String, Function<Integer, Long>> transformers = new HashMap<>();
transformers.put("A", x -> x*2L);
transformers.put("B", x -> x+3L);
transformers.put("C", x -> x+11L);
Map<String, Long> mappedData = inputData.entrySet().stream()
.map(entry -> new AbstractMap.SimpleEntry<>(
entry.getKey(),
transformers.get(entry.getKey()).apply(entry.getValue())))
.collect(toMap(Map.Entry::getKey, Map.Entry::getValue));
预期结果:{A=16,B=10,C=17}。
在 Java Streams API 中,有没有更简单的方法来表达“将转换器的映射应用于输入数据匹配的映射”?