通用的java中部分方式实现List<自定义对象>转为List<Map>

自定义类

/*** @date 2023/12/19 11:20*/
public class Person {private String name;private String sex;public Person() {}public Person(String name, String sex) {this.name = name;this.sex = sex;}public String getName() {return name;}public String getSex() {return sex;}public void setName(String name) {this.name = name;}public void setSex(String sex) {this.sex = sex;}
}

工具模板类

import com.alibaba.fastjson.JSON;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** @date 2023/12/19 11:29*/
public class ListObjToMapUtils<T> {/*** List<自定义对象> 转为 List<Map<String, Object>>** @param objs* @return*/public List<Map<String, Object>> listObjToMap1(List<T> objs) {List<Map<String, Object>> results = new ArrayList<>();objs.forEach(item -> {Map<String, Object> map = null;try {map = (Map<String, Object>) PropertyUtils.describe(item);map.remove("class");} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}results.add(map);});return results;}/*** List<自定义对象> 转为 List<Map<String, Object>>** @param objs* @return*/public List<Map<String, Object>> listObjToMap2(List<T> objs) {List<Map<String, Object>> results = (List<Map<String, Object>>) JSON.parse(JSON.toJSONString(objs));return results;}/*** List<自定义对象> 转为 List<Map<String, String>>** @param objs* @return*/public List<Map<String, String>> listObjToMap3(List<T> objs) {List<Map<String, String>> results = new ArrayList<>();objs.forEach(item -> {Map<String, String> map = null;try {map = (Map<String, String>) BeanUtils.describe(item);map.remove("class");} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}results.add(map);});return results;}public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {// Person的修饰符一定要是publicList<Person> personList = new ArrayList<>();Person person1 = new Person("小明", "m");Person person2 = new Person("小红", "f");personList.add(person1);personList.add(person2);// 使用ListObjToMapUtils<Person> listObjToMapUtils = new ListObjToMapUtils<>();long start1 = System.currentTimeMillis();List<Map<String, Object>> results1 = listObjToMapUtils.listObjToMap1(personList);long end1 = System.currentTimeMillis();System.out.println("PropertyUtils.describe方式耗时 " + (end1 - start1) + " 毫秒");long start2 = System.currentTimeMillis();List<Map<String, Object>> results2 = listObjToMapUtils.listObjToMap2(personList);long end2 = System.currentTimeMillis();System.out.println("fastjson方式耗时 " + (end2 - start2) + " 毫秒");long start3 = System.currentTimeMillis();List<Map<String, String>> results3 = listObjToMapUtils.listObjToMap3(personList);long end3 = System.currentTimeMillis();System.out.println("BeanUtils.describe方式耗时 " + (end3 - start3) + " 毫秒");}
}

结果

部分maven依赖

        <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.41</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency>

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

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

相关文章

鸿蒙Harmony4.0开发-ArkTS基础知识运用

概念 1.渲染控制语法&#xff1a; 条件渲染&#xff1a;使用if/else进行条件渲染。 Column() {if (this.count > 0) {Text(count is positive)} }循环渲染&#xff1a;开发框架提供循环渲染&#xff08;ForEach组件&#xff09;来迭代数组&#xff0c;并为每个数组项创建…

2023人物专访「中国新时代艺坛楷模」蓝弘艺术专题报道

蓝弘&#xff0c;名文珺&#xff0c;广东客家人。十六届人大代表&#xff0c;广州蓝弘艺术中心创办人&#xff0c;民建中央画院广东分院副院长&#xff0c;广东省美术家协会会员&#xff0c;广州江海地区书画家协会会长。 蓝弘画家被世界教科组织联合协会评为“世界艺术大使”…

【操作系统】快速做题向 优先权调度(抢占式/非抢占式)算法做题步骤分析

理论知识理解上面这几句话就行。 抢占&#xff0c;非抢占的区别就是&#xff0c;能不能直接中断某正在进行的优先级没我高的进程的运行。 非抢占只要某进程已经在运行了&#xff0c;后面不论出现多少优先级多高的进程&#xff0c;都得老老实实等待这个进程运行完毕&#xff0…

RuntimeError: Inference tensors do not track version counter.

问题&#xff1a; Testing DataLoader 0: 0%| | 0/78 [00:00<?, ?it/s]Failed to collect metadata on function, produced code may be suboptimal. Known situations this can occur are inference mode only compilation involving resize_ or prims (!sc…

NFC标签写入网址,NTAG213写入网址URL

NFC标签常用的有NTAG213,/215/216以及国产的F8123&#xff0c;可以写入网址&#xff0c;应用在产品身份识别&#xff0c;溯源&#xff0c;防伪等&#xff0c;我们使用NFC读写器ACR122u可以批量快速的写入网址URL 一、打开软件 二、把需要写的网址&#xff0c;整理到Excel表格中…

mysql中的数据类型和表操作【MYSQL】

mysql中的数据类型和表操作MYSQL】 一. 表结构操作1.1创建及删除表结构i. 创建表ii. 查看表结构iii. 删除表 1.2 修改表结构i. 修改表名ii. 添加新字段iii. 修改字段中的属性iiii. 删除字段 二. 表中类型2.1 int类型2.2 bit类型2.3 浮点类型i. float类型ii. decimal类型 2.4 字…

智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑寡妇算法4.实验参数设定5.算法结果6.参考文…

LeetCode刷题--- 子集

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题【 http://t.csdnimg.cn/yUl2I 】【C】 【 http://t.csdnimg.cn/6AbpV 】数据结构与算法【 http://t.csdnimg.cn/hKh2l 】 前言&#xff1a;这个专栏主要讲…

【BEV感知】BEVFormer 融合多视角图形的空间特征和时序特征 ECCV 2022

前言 本文分享BEV感知方案中&#xff0c;具有代表性的方法&#xff1a;BEVFormer。 它基于Deformable Attention&#xff0c;实现了一种融合多视角相机空间特征和时序特征的端到端框架&#xff0c;适用于多种自动驾驶感知任务。 主要由3个关键模块组成&#xff1a; BEV Que…

【源码】基于SpringBoot+thymeleaf实现的快递之家管理系统

系统介绍 基于SpringBootthymeleaf实现的快递之家管理系统是为学校打造的高效的快递管理系统&#xff0c;系统分为管理员、注册用户两类角色&#xff0c;一共是分为三大菜单项&#xff0c;分别是我的物流、个人管理、后台管理&#xff0c;管理员拥有全部菜单&#xff0c;注册用…

【大数据实训】python石油大数据可视化(八)

2014到2020年石油加工产品产量数据处理分析 一、任务描述 石油是工业的命脉。 一直到2020年&#xff0c;我国原油产量基本处于平稳的状态&#xff0c;大部分原油来自国外进口&#xff1b;中国原油加工产量在华东、东北地区占比较大&#xff0c;华南地区相对较少。原油的加工企业…

打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!

1 前言 是否曾想过&#xff0c;在一天的工作中&#xff0c;你到底点击了键盘多少次&#xff0c;或者鼠标点击了多少下&#xff1f; 是否好奇每天工作的时候&#xff0c;自己究竟有多努力&#xff1f; 本文将带你使用 Python&#xff0c;利用 pynput 监听键盘和鼠标事件&…

关于SSL证书常见的那些误区,你“中”了吗

随着数据安全的重要性越来越凸显&#xff0c;使用SSL证书以实现网站HTTPS加密保护及身份的可信认证成为各政企网站的广泛选择。然而很多网站运营者对于SSL证书的理解仍然存在一些误区&#xff0c;为了能让大家对SSL证书有更为清晰的认识&#xff0c;下面小锐就带大家一起来了解…

Django(一)

1.web框架底层 1.1 网络通信 注意&#xff1a;局域网 个人一般写程序&#xff0c;想要让别人访问&#xff1a;阿里云、腾讯云。 去云平台租服务器&#xff08;含公网IP&#xff09;程序放在云服务器 先以局域网为例 我的电脑【服务端】 import socket# 1.监听本机的IP和…

drf知识--01

前后端开发模式 在开发Web应用中&#xff0c;有两种应用模式&#xff1a; 前后端混合开发: bbs 项目--renderajax 1、全栈开发--前端html后端都是一个人写 2、前端人员&#xff1a;写空页面&#xff0c;没有模板语法&#xff0c;只要html&#xff0c;c…

FA2016ASA (MHz范围晶体单元,内置热敏电阻) 汽车

FA2016ASA是爱普生推出的一款内置热敏电阻、频率范围为38.4MHz的晶振&#xff0c;确保数据的准确传输&#xff0c;同时有效避免频谱干扰的出现。可以在-40C to 125C 的温度内稳定工作。在汽车内部空间有限的情况下&#xff0c;FA2016ASA以其小型超薄的外形尺寸2.0 1.6 0.68mm…

职场规划和职业发展

有人说&#xff0c;做任何事情都要有规划&#xff0c;在职场中人要有规划&#xff0c;公司也要有规划。职场上没有人是你生命中的例外&#xff0c;如果你没有规划&#xff0c;那么就说明你根本不知道自己要什么。只有做好规划&#xff0c;才能让你在职场中获得更好的发展。在职…

RocketMQ从入门到精通

1.MQ概述 1.1 RocketMQ简介 RocketMQ 是阿里开源的分布式消息中间件&#xff0c;跟其它中间件相比&#xff0c;RocketMQ 的特点是纯JAVA实现&#xff0c;是一套提供了消息生产&#xff0c;存储&#xff0c;消费全过程API的软件系统。 1.2 MQ用途 限流削峰 MQ可以将系统的超量请…

Java第二十章课堂总结

如果一次只完成一件事情&#xff0c;很容易实现。但现实生活中&#xff0c;很多事情都是同时进行的。Java中为了模拟这种状态&#xff0c;引入了线程机制。简单地说&#xff0c;当程序同时完成多件事情时&#xff0c;就是所谓的多线程。多线程应用相当广泛&#xff0c;使用多线…

【bug日记】如何切换jdk版本,如何解决java和javac版本不一致

背景 今天在安装jenkins后&#xff0c;使用java运行war包的时候&#xff0c;提示jdk1.8版本太低&#xff0c;需要提高版本&#xff0c;所以就需要切换jdk版本 解决 在用户变量中&#xff0c;首先更改了JAVA_HOME的地址为17的目录&#xff0c;发现javac的版本改为17了&#x…