Java 使用 Stream 将 Map<Object, Object> 转换为 Map<String, pod>
Java 使用 Stream 将 Map<Object, Object> 转换为 Map<String, pod>
这段代码使用 RedisTemplate 获取 Hash 类型的键值对,然后将 Map<Object, Object> 转换为 Map<String, pod>。
原始代码:
public Map<String, pod> getPods(String key) {
Map<Object, Object> entries = redisTemplate.opsForHash().entries(nxConfig.getKeyPrefix() + key);
return entries.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> (pod) entry.getValue()));
}
解释:
- 使用
redisTemplate.opsForHash().entries()获取存储在 Redis 中的 Hash 类型数据,返回值为Map<Object, Object>。 - 使用
entrySet().stream()将 Map 转换为 Stream,方便进行后续操作。 - 使用
collect(Collectors.toMap(keyMapper, valueMapper))将 Stream 转换为新的 Map。keyMapper用于将 Object 类型的键转换为 String 类型的键,这里使用entry -> entry.getKey().toString()。valueMapper用于将 Object 类型的值转换为 pod 类型的值,这里使用entry -> (pod) entry.getValue()。
最终返回的 Map 为 Map<String, pod>。
其他方法:
除了使用 Stream,还可以使用循环的方式将 Map 转换为目标类型。但是使用 Stream 可以使代码更加简洁、易读,并且可以利用 Stream 的其他功能,例如并行处理。
原文地址: https://www.cveoy.top/t/topic/oBKp 著作权归作者所有。请勿转载和采集!