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()));
}

解释:

  1. 使用 redisTemplate.opsForHash().entries() 获取存储在 Redis 中的 Hash 类型数据,返回值为 Map<Object, Object>
  2. 使用 entrySet().stream() 将 Map 转换为 Stream,方便进行后续操作。
  3. 使用 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 的其他功能,例如并行处理。

Java 使用 Stream 将 Map<Object, Object> 转换为 Map<String, pod>

原文地址: https://www.cveoy.top/t/topic/oBKp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录