首页 > 编程语言 >Java 8 如何快速的将List<T>转换成List<Map<String,Object>>

Java 8 如何快速的将List<T>转换成List<Map<String,Object>>

时间:2022-08-25 10:37:30浏览次数:71  
标签:转换成 00 Java 08 List value 2022 time

实际开发过程中,经常会遇到需要将List<T>转换List<Map<String,Object>>的情况,那么你们都是用什么方法实现的呢?

下面是我开发过程中使用的方法,还望大佬看后轻喷。

List<Map<String,Object>> monitorVoMapList = Optional.ofNullable(monitorVoLists).orElseGet(ArrayList::new)
                .stream().map(monitorVO -> {
                    Map<String, Object> monitorVoMap = BeanCopyUtil.beanToMap(monitorVO);
                    List<Map<String, Object>> sensorDataList = sensorService
                            .listMaps(new LambdaQueryWrapper<SensorDetail>()
                                    .select(SensorDetail::getDataInfo, SensorDetail::getSensorType)
                                    .eq(SensorDetail::getStationSn, monitorVO.getStationSn()));
                    sensorDataList.forEach(sensorData -> {
                        JSONObject data = new JSONObject();
                        JSONObject json = JSON.parseObject(sensorData.get("data_info") + "");
                        json.keySet().forEach(key -> data.put(key, json.getJSONObject(key).getString("value")));
                        monitorVoMap.put(sensorData.get("sensor_type") + "", data);
                    });
                    return monitorVoMap;
                }).collect(Collectors.toList())
    public static <T> Map<String, Object> beanToMap(T bean) {
        Map<String, Object> map = Maps.newHashMap();
        if (bean != null) {
            BeanMap beanMap = BeanMap.create(bean);
            for (Object key : beanMap.keySet()) {
                map.put(key + "", beanMap.get(key));
            }
        }
        return map;
    }

上面的方法没有数据结构看起来可能比较吃力,下面就将数据贴出来

monitorVoLists数据格式
[
  {
    "stationSn": "0223990045",
    "stationName": "0223990045",
    "deptId": "0158fabc60ed48a8ac8de8f6021e722f",
    "deptName": "武汉分公司",
    "stationType": "闸坝",
    "status": 0,
    "location": {
      "address": "广东省广州市白云区白云山曹家坝",
      "lng": 113.28562286878172,
      "lat": 23.173928972719555
    }
  },
  {
    "stationSn": "0223990044",
    "stationName": "0223990044",
    "deptId": "0158fabc60ed48a8ac8de8f6021e722f",
    "deptName": "武汉分公司",
    "stationType": "闸坝2",
    "status": 1,
    "location": {
      "address": "广东省广州市白云区白云山曹家坝2",
      "lng": 123.28562286878172,
      "lat": 24.173928972719555
    }
  }
]
sensorDataLists数据格式
[
  {
    "data_info": {
      "03H_C": {
        "time": "2022-08-23 10:55:00",
        "value": ""
      },
      "27H_Q": {
        "time": "2022-08-23 10:55:00",
        "value": ""
      },
      "39H_Z": {
        "time": "2022-08-23 10:55:00",
        "value": ""
      },
      "30H_QA": {
        "time": "2022-08-23 10:55:00",
        "value": "16302.000"
      },
      "37H_VJ": {
        "time": "2022-08-23 10:55:00",
        "value": ""
      },
      "FF08H_NAQ1": {
        "time": "2022-08-23 10:55:00",
        "value": "0.000"
      },
      "FF10H_PAQ1": {
        "time": "2022-08-23 10:55:00",
        "value": "16302.000"
      }
    },
    "sensor_type": "H1688V2X"
  },
  {
    "data_info": {
      "39H_Z": {
        "time": "2022-08-17 15:49:00",
        "value": "1.021"
      }
    },
    "sensor_type": "H1600"
  }
]

最终处理后返回数据格式

[
  {
    "H1600": {
      "39H_Z": "1.021"
    },
    "deptName": "武汉分公司",
    "H1688V2X": {
      "39H_Z": "",
      "03H_C": "",
      "30H_QA": "16302.000",
      "FF10H_PAQ1": "16302.000",
      "FF08H_NAQ1": "0.000",
      "27H_Q": "",
      "37H_VJ": ""
    },
    "stationType": "闸坝",
    "deptId": "0158fabc60ed48a8ac8de8f6021e722f",
    "location": {
      "address": "广东省广州市白云区白云山曹振宇家",
      "lng": 113.28562286878172,
      "lat": 23.173928972719555
    },
    "stationName": "0223990045",
    "stationSn": "0223990045",
    "status": 0
  },
  {
    "stationSn": "0223990044",
    "stationName": "0223990044",
    "deptId": "0158fabc60ed48a8ac8de8f6021e722f",
    "deptName": "武汉分公司",
    "stationType": "闸坝2",
    "status": 1,
    "location": {
      "address": "广东省广州市白云区白云山曹振宇家2",
      "lng": 123.28562286878172,
      "lat": 24.173928972719555
    }
  }
]

 

标签:转换成,00,Java,08,List,value,2022,time
From: https://www.cnblogs.com/JackpotHan/p/16621045.html

相关文章

  • Javascript:设计模式-简单工厂模式
    工厂模式大体分为三类:简单工厂模式、工厂方法模式、抽象工厂模式。在我们日常的实现功能逻辑中,最基础的一种方法是这样的:有一个体育器材店,每一种类型的运动器材都有名称......
  • Javascript:实现继承的几种方式
    既然要实现继承,那么首先我们得有一个父类,代码如下://定义一个动物类function Animal(name){  //属性  this.name=name|| 'Animal';  //实例......
  • Javascript:设计模式-代理模式
    例:该例为书中原例,小明(xiaoming)遇到了女神(A),打算送个花来告白,刚好小明打听到女神有个朋友叫(B),自己不太好意思,所以决定让B来送花,虽然这件事儿肯定是凉了,但是作为例子还是很......
  • PE结构之RVA转换成FOA(3)
    RVA转FOA简介PE文件有两种状态,一种是在文件中的状态,另外一种是在内存中展开若我们运行了一个PE文件且知道了某个全局变量的地址,那么该如何通过这个全局变量地址来......
  • java.lang.ExceptionInInitializerError Caused by: org.apache.ibatis.exceptions.Pe
      在build中配置resources,来防止我们的资源导出失败的问题,去pom.xml配置,防止资源导出问题<!--在build中配置resources,来防止我们的资源导出失败的问题--><build>......
  • 基于list stream: reduce的使用实例
    目录liststream:reduce的使用reduce一共有三种实现1、第一种2、第二种3、第三种reduce的基本用法1、初识reduce的基本api2、应用场景测试 ......
  • Java-Java集合
    一、List,Set,Map三者的区别二、Arraylist与LinkedList区别三、ArrayList与Vector区别呢?为什么要⽤Arraylist取代Vector呢四、HashMap和Hashtable的区别五......
  • Java-Java集合排序
    一、ListMap排序修订记录版本是否发布2020-01-25v1.0是一、ListMap排序Java中list里面存放map,根据map中的某一个或多个字段进行排序importjava.u......
  • Java-Java中的运算符
    一、Java&、&&、|、||、^、<<、>>、~、>>>等运算符&(按位与)&&(逻辑与)|(按位或)||(逻辑或)^(异或运算符)<<(左移运算符)>>(右移运算符)~(取反运算符)>>>(无符号右移运算符)二......
  • Java-Java操作SFTP工具类
    一、SFTP工具类二、配置文件Bean修订记录版本是否发布2020-08-03v1.0是一、SFTP工具类importcom.*.*.common.util.FileUtil;importcom.*.*.comm......