将List<Map<String,Object>>转为List<Object>

经常在开发中会需要将List<Map<String,Object>>转为List,Object也就是你自己对应的目标对象,因为经常要用,干脆就自己封装了一个,代码示例如下:

假设有一个类:Animal.java

public class Animal {private String name;private int age;public Animal(String name, int age) {this.name = name;this.age = age;}// 省略getter和setter方法@Overridepublic String toString() {return "Animal{" +"name='" + name + '\'' +", age=" + age +'}';}
}

将 List<Map<String, Object>> 转换为 List 类型。接收 Class 类型作为参数,并使用反射来创建指定类的对象:

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class MapListToObjectListConverter {public static <T> List<T> convertList(List<Map<String, Object>> listOfMaps, Class<T> clazz) {List<T> resultList = new ArrayList<>();for (Map<String, Object> map : listOfMaps) {try {Constructor<T> constructor = clazz.getConstructor(String.class, int.class);String name = (String) map.get("name");int age = (int) map.get("age");T instance = constructor.newInstance(name, age);resultList.add(instance);} catch (NoSuchMethodException | InstantiationException |IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}}return resultList;}public static void main(String[] args) {// 假设这是从其他地方得到的List<Map<String, Object>>List<Map<String, Object>> listOfMaps = new ArrayList<>();Map<String, Object> map1 = Map.of("name", "Lion", "age", 5);Map<String, Object> map2 = Map.of("name", "Tiger", "age", 3);listOfMaps.add(map1);listOfMaps.add(map2);// 将List<Map<String, Object>>转换为List<Animal>List<Animal> animals = convertList(listOfMaps, Animal.class);// 输出转换后的Animal对象列表for (Animal animal : animals) {System.out.println(animal);}}
}

这里的 convertList 方法接受 List<Map<String, Object>> 和一个 Class 参数,其中 T 是你希望转换的目标类型。方法使用反射根据提供的类 clazz 创建对象,并将其添加到结果列表中。在这个例子中,我们将其用于 Animal 类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并发包原子类详解

原子类型是一种无锁的、线程安全的、使用基本数据类型和引用数据类型的线程安全解决方案。 CAS算法&#xff1a;CAS包含3个操作数&#xff0c;分别是内存值V、预期值A、要修改的新值B。当且仅当预期值A与内存值V相等时&#xff0c;将内存值V修改为B&#xff0c;否则什么都不需要…

ftp传海量文件会卡?跨境数据传输推荐使用FTP吗?

企业在传输大量文件时&#xff0c;经常会遇到FTP卡顿的问题&#xff0c;尽管采取多种方式仍无法完美解决&#xff0c;尤其是在跨境数据传输方面。对于紧急项目而言&#xff0c;文件数据无法及时同步可能导致任务无法按时完成。在传输速度方面&#xff0c;甚至可能出现每秒几KB的…

免费好用的API精选推荐

快递物流订阅与推送&#xff08;含物流轨迹&#xff09;&#xff1a;【物流订阅与推送、H5物流轨迹、单号识别】支持单号的订阅与推送&#xff0c;订阅国内物流信息&#xff0c;当信息有变化时&#xff0c;推送到您的回调地址。地图轨迹支持在地图中展示包裹运输轨迹。包括顺丰…

Jmeter入门

一、下载jmeter 官网下载 下载之后解压&#xff0c;在目录/bin下面找到jmeter.bat双击之后即可启动Jmeter。 二、使用 如下左图&#xff0c;选择语言为中文&#xff0c;可以修改测试计划的名称。如下右图&#xff0c;添加线程组 添加线程组 添加http请求 路径传参方式 …

Morphisec革命:利用移动目标防御增强Windows安全性

来源&#xff1a;艾特保IT 虹科分享 | Morphisec革命&#xff1a;利用移动目标防御增强Windows安全性 原文链接&#xff1a;虹科分享 | Morphisec革命&#xff1a;利用移动目标防御增强Windows安全性 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; Windows 10安全工…

esp32cam的与安卓的udp服务视频传输

esp32cam /* 下载程序 按住接口板上的IO0 在程序上传的时候 按一下 开发板上的rst按钮 待程序开始上传 在松开 IO0 brownout detector was triggered报错 触发了断电探测器&#xff0c;估计是供电环境本来就不稳定 屏蔽 #include "soc/soc.h" #include "so…

js中分号产生的问题详解,第一次出现分号导致的问题的记录

图示: 现在 这段代码本来是两行,但是格式化后注意下面一行缩进了,代表按一行解析了, 结果: 加上分号后再格式化就自动对齐了,代表按两行解析. 要是按照没有分号进行解析是怎样的? GPT回答: 这段代码是一行 JavaScript 代码&#xff0c;涉及到了 JSON 对象、条件语句和跳转页面…

python python输入位置的坐标(即经纬度),计算两点的距离结果保留两位

以下是Python代码实现&#xff1a; from math import radians, sin, cos, sqrtdef distance(lat1, lon1, lat2, lon2):R 6371 # 地球平均半径&#xff0c;单位为公里d_lat radians(lat2 - lat1)d_lon radians(lon2 - lon1)lat1 radians(lat1)lat2 radians(lat2)a sin(d…

非法窃取、下载、打印公司商业秘密但未利用,构成犯罪吗?

公司的电子邮箱内往往存储了大量商业秘密&#xff0c;而商业秘密又是公司生存的根本。未经许可登录他人电子邮箱&#xff0c;并窃取、下载、兜售或以其他目的&#xff0c;泄露商业秘密属违法行为&#xff0c;但没有利用这些数据也构成犯罪吗&#xff1f; 案件 武汉一家技术公…

业务中台解释

业务中台是一个组织管理名词&#xff0c;也被称为有形的中台&#xff0c;因为是有实体部门存在的。业务中台多半是传统的成本中心&#xff0c;把后台的资源整合成前台打仗需要的“中间件”&#xff0c;方便被随需调用。典型的业务中台如字节跳动的直播中台、腾讯的技术中台等。…

图形化编程学习攻略:从新手到专家的指南

在编程世界中&#xff0c;图形化编程已经成为越来越多初学者的首选。它通过直观的图形化界面&#xff0c;让编程变得更加简单和有趣。6547网将为你提供一份全面的图形化编程攻略&#xff0c;帮助你从新手成为专家。 一、选择合适的图形化编程工具 Scratch&#xff1a;适合儿童…

深入理解RBAC权限系统

最近&#xff0c;一位朋友在面试中被问及如何设计一个权限系统。我们注意到目前许多后台管理系统&#xff08;包括一些热门的如若依快速开发平台&#xff09;都采用了RBAC访问控制策略。该策略通过将权限授予角色&#xff0c;然后将角色分配给用户&#xff0c;从而实现对系统资…

推荐一个FL Studio最适配的midi键盘?

Hello大家好&#xff01;好消息&#xff01;好消息&#xff01;特大好消息&#xff01; 水果党们&#xff01;终于有属于自己的专用MIDI键盘啦&#xff01; 万众期待的Novation FLKEY系列 正式出炉&#xff01; 做编曲和音乐制作的朋友们&#xff0c;对水果软件FLSTUDIO应该…

mysql开启查询日志

mysql默认不开启查询日志&#xff0c;可以通过命令查询 show VARIABLES LIKE general%; 开启查询日志&#xff0c;并更改日志存放目录&#xff0c;不过存放的目录一定要有权限不然会报错 手动创建一下log目录下的mysql目录并赋予权限 mkdir /var/log/mysql chown -R mysql:m…

在vue3的js中将一组数据赋值的问题

代码: if (res.data) { myPrizeList.value res.data console.log(myPrizeList.value,myPrizeList.value) const giftList ref() console.log(JSON.parse(JSON.stringify(myPrizeList.val…

【计算机网络】URL概念及组成

目录 一、什么是URL 二、URL格式 示例&#xff1a; 1. Scheme&#xff08;协议&#xff09;&#xff1a; 2. Host&#xff08;主机&#xff09;&#xff1a; 3. Port&#xff08;端口&#xff09;&#xff1a; 4. Path&#xff08;路径&#xff09;&#xff1a; 5. Quer…

二叉树--基础OJ

1.对称二叉树 题目链接&#xff1a;101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 我们可以用递归的方法去做&#xff1a; 如果两个树互为镜像&#xff08;1.根节点的值相同&#xff0c;2.左子树的值与右子树的值对称&#xff09;则为对称二叉树&a…

SpringBoot文件下载Controller方法的几种返回值的写法与优劣

1. void 方法&#xff0c;使用 HttpServletResponse 进行文件下载&#xff1a; PostMapping("/downloadFile") public void downloadFile(HttpServletResponse response) {// 实现文件下载逻辑byte[] fileData /* 从某处获取文件数据 */;try (OutputStream outputS…

十三、C#笔记

/// <summary> /// 第二十三章&#xff1a;使用任务提高吞吐量 /// </summary> namespace Chapter23 { class Program { static void Main(string[] args) { //23.1使用并行处理执行多任务处理 /* * …

Vue--第八天

Vue3 1.优点&#xff1a; 2.创建&#xff1a; 3.文件&#xff1a; 换运行插件&#xff1a; 4.运行&#xff1a; setup函数&#xff1a; setup函数中获取不到this&#xff08;this 在定义的时候是Undefined) reactive()和ref(): 代码&#xff1a; <script setup> // …