通用的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;并为每个数组项创建…

C/C++ 控制台窗口光标移动位置实现(Linux/Windows)

Linux 为打印控制字符实现 Windows 为WINAPI控制台接口实现 功能&#xff1a; 移动到上一行 移动到下一行 定位控制台光标位置到指定X,Y坐标 static bool MoveConsoleCursorPositionToPreviousNextLine(bool previous, int line) noexcept {if (line < 0) {return fals…

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表格中…

初识CJSON--------1

1. CJSON的优点 CJSON是一种轻量级的C语言JSON解析库&#xff0c;可以方便地将JSON格式的数据解析为C语言中的对象或数组。它具有以下优点和用处&#xff1a; 轻量级&#xff1a;CJSON是一个小巧的库&#xff0c;源代码只有几个文件&#xff0c;不需要额外的依赖库。 易用性…

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.参考文…

windows下安装php_phalcon扩展(php7.3+php_psr+php_phalcon4.06)

windows日志-应用程序-经典&#xff1a; --------------------------------------------------------------------------------------------------------------------------------- 无法找到来自源 PHP-7.3.25 的事件 ID 4 的描述。本地计算机上未安装引发此事件的组件&#xf…

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…

八股文打卡day4——计算机网络(4)

TCP和UDP的概念、特点、区别和对应的使用场景&#xff1f; 我的回答&#xff1a; 概念&#xff1a; TCP是传输控制协议&#xff0c;是面向连接、可靠的、基于字节流的传输层通信协议。 UDP是用户数据报协议&#xff0c;是无连接、不可靠的&#xff0c;基于数据包的传输层通信…

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

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

分治法-汉诺塔问题

问题来源 大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。 思路 汉诺塔问题实质是把移动n个盘子的问题转化为移动n-1个盘&#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…