【问题标题】:Type cast for inner HashMap to Map将内部 HashMap 类型转换为 Map
【发布时间】:2020-10-17 04:53:44
【问题描述】:

我可以将 HashMap>> 之类的复杂结构类型转换为 Map>> 吗?

【问题讨论】:

  • 可能很简单的方法就是迭代它
  • 能否在源头更改数据?避免使用 List<HashMap<...>> 开头。

标签: java casting hashmap


【解决方案1】:

List<HashMap<String,String>> 不是List<Map<String,String>>。您可以自担风险假装和使用原始类型:

HashMap<String, List<HashMap<String,String>>> map = new HashMap<>();
Map<String,List<Map<String,String>>> cast = (Map) map;

您将收到未检查分配的警告,因为您可以这样做:

String key = "";
cast.put(key, Collections.singletonList(new TreeMap<>())); // Not a HashMap
HashMap<String, String> inserted = map.get(key).get(0);

编译时没有警告,但会抛出 ClassCastException

【讨论】:

    【解决方案2】:

    我建议流式传输外部和内部映射,然后分配给父引用Map

     Map<String,List<hMap<String,String>>> res = map.entrySet().stream()
                .collect(Collectors.toMap(Map.Entry::getKey,
                        entry->entry.getValue().stream().map(HashMap::new).collect(Collectors.toList())));
    

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2019-09-20
      • 2016-01-18
      • 2022-12-05
      • 2017-01-28
      • 2018-10-29
      相关资源
      最近更新 更多