使用流从Json创建嵌套地图

吉普

我有以下Json,我正在阅读具有相同结构的嵌套POJO。

{
  "employees": [
    {
      "name": "John",
      "age": "30",
      "proData": [
        {
          "year": "1",
          "idList": [
            "234342",
            "532542",
            "325424",
            "234234"
          ]
        },
        {
          "year": "2",
          "idList": [
            "234342",
            "532542",
            "325424",
            "234234"
          ]
        },
        {
          "year": "3",
          "idList": [
            "234342",
            "532542",
            "325424",
            "234234"
          ]
        }
      ]
    },
    {
      "name": "Scott",
      "age": "32",
      "proData": [
        {
          "year": "1",
          "idList": [
            "234342",
            "532542",
            "325424",
            "234234"
          ]
        },
        {
          "year": "2",
          "idList": [
            "234342",
            "532542",
            "325424",
            "234234"
          ]
        },
        {
          "year": "3",
          "idList": [
            "234342",
            "532542",
            "325424",
            "234234"
          ]
        }
      ]
    }
  ]
}

现在,我想将此映射到如下所示的结构,ProData可以使用中的每个字符串来初始化idList

Map<String,Map<String,List<ProData>>> finalMap

我写了类似下面的东西,它可以工作。

        Map<String,Map<String,List<ProData>>> finalMap = new HashMap<>();

        for(Employee employee:root.getEmployees()){
            Map<String,List<ProData>> proDataMap = new HashMap<>();
            for(ProData proData: employee.getProData()){
                List<ProData> finalObjs = new ArrayList<>();
                for(String id:proData.getIdList()){
                   finalObjs.add(new ProData(id));
                }

                proDataMap.put(proData.getYear(),finalObjs);
            }
            finalMap.put(employee.getName(),proDataMap);
        }

我想使用流API制作更好的版本。

清扫器

最终结果是一张地图,因此请使用toMap收集器。地图的键是员工姓名(假设没有重复),并且地图值需要更多的工作。

root.getEmployees().stream().collect(
    Collectors.toMap(
        Employee::getName,
        Employee::getProDataMap
    )
}

现在,让我们试着写getProDataMapEmployee再次,我们使用toMap收集器。键是年份(假定没有重复项),值是ProData使用构造函数映射到的ID列表

public Map<String, List<ProData>> getProDataMap() {
    return this.getProData().stream().collect(
        Collectors.toMap(
            ProData::getYear,
            proData -> proData.getIdList().stream()
                .map(ProData::new)
                .collect(Collectors.toList())
        )
    )
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在嵌套数据结构上使用Java8流创建地图

来自分类Dev

使用 JSON 创建地图

来自分类Dev

如何使用Flutter中的json解析的嵌套地图列表中的函数创建对象

来自分类Dev

Clojure - 创建嵌套地图

来自分类Dev

Java / Stream帮助:仅使用流将地图的嵌套列表转换为地图

来自分类Dev

使用地图或模板在节点流中转换JSON

来自分类Dev

使用地图或模板转换节点流中的JSON

来自分类Dev

使用流分析查询创建 JSON 对象

来自分类Dev

cqlengine:创建嵌套地图的方法

来自分类Dev

如何使用嵌套的“地图”

来自分类Dev

如何使用Java从Spark中的kafka读取流嵌套的JSON

来自分类Dev

如何使用laravel或mysql创建嵌套的json?

来自分类Dev

使用递归创建动态嵌套的json对象

来自分类Dev

如何使用嵌套的JSON创建数据框?

来自分类Dev

如何使用vba创建嵌套的json文件

来自分类Dev

使用jQuery从JSON创建动态嵌套列表

来自分类Dev

使用嵌套的 json 数据创建动态表

来自分类Dev

使用 PHP 创建嵌套的 JSON 对象

来自分类Dev

使用 python defaultdict 创建嵌套的 json

来自分类Dev

使用流的地图键的For循环

来自分类Dev

Java中使用流收集groupingBy创建单一值的地图

来自分类Dev

创建基于使用Java 8流常见的情况,从两个不同的名单地图

来自分类Dev

如何在Groovy中使用地图创建JSON

来自分类Dev

Flutter使用嵌套字典/地图

来自分类Dev

使用交换!在嵌套的地图上

来自分类Dev

使用Om,从嵌套地图生成嵌套div

来自分类Dev

根据父/子关系创建嵌套地图

来自分类Dev

Scala创建不可变的嵌套地图

来自分类Dev

如何防止 lodash 地图创建嵌套对象?