java常用的对象转map的几种方式

article/2025/11/3 23:06:50

创建对象User

package com.xqc;import java.util.Date;public class User {/**** ID*/private Integer id;/**** 用户名*/private String userName;/**** 岗位ID*/private Long jobId;/*** 生日*/private Date birthday;/**** 薪水*/private Double salary;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Long getJobId() {return jobId;}public void setJobId(Long jobId) {this.jobId = jobId;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Double getSalary() {return salary;}public void setSalary(Double salary) {this.salary = salary;}public User setUser(){User user = new User();user.setId(123);user.setUserName("王二");user.setSalary(2344.4D);user.setBirthday(new Date());user.setJobId(99999L);return user;}
}

1.使用反射

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;/***使用反射*/
public class Method01 {public static void main(String[] args) {long s1 = System.currentTimeMillis();Map<String, Object> dataMap = objectToMap(new User().setUser());long s2 = System.currentTimeMillis();System.out.println("花费时间毫秒:"+(s2-s1));System.out.println(dataMap);}public static Map<String, Object> objectToMap(Object object){Map<String,Object> dataMap = new HashMap<>();Class<?> clazz = object.getClass();for (Field field : clazz.getDeclaredFields()) {try {field.setAccessible(true);dataMap.put(field.getName(),field.get(object));} catch (IllegalAccessException e) {e.printStackTrace();}}return dataMap;}
}

执行多次耗时一般在4-7毫秒左右

2.使用org.apache.commons.beanutils包下的BeanUtils.describe()方法,需要引入commons-beanutils包

import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;public class Method02 {public static void main(String[] args) {long s1 = System.currentTimeMillis();Map<String, String> dataMap = objectToMap(new User().setUser());long s2 = System.currentTimeMillis();System.out.println("花费时间毫秒:"+(s2-s1));System.out.println(dataMap);}public static Map<String, String> objectToMap(Object object){try {Map<String, String> dataMap = BeanUtils.describe(object);dataMap.remove("class");//移除多出来的class字段return dataMap;} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}return new HashMap<>();}
}

执行多次耗时一般在150毫秒左右,甚至更多

3.直接使用put方法往map对象里一个个赋值

import java.util.HashMap;
import java.util.Map;public class Method03 {public static void main(String[] args) {long s1 = System.currentTimeMillis();User user = new User().setUser();Map<String,Object> dataMap = new HashMap<>();dataMap.put("id",user.getId());dataMap.put("userName",user.getUserName());dataMap.put("salary",user.getSalary());dataMap.put("birthday",user.getBirthday());dataMap.put("jobId",user.getJobId());long s2 = System.currentTimeMillis();System.out.println("花费时间毫秒:"+(s2-s1));System.out.println(dataMap);}
}

执行多次耗时一般在3-9毫秒左右

4.使用BeanMap.create方法,需要引入spring相关jar

import org.apache.commons.beanutils.BeanUtils;
import org.springframework.cglib.beans.BeanMap;import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;public class Method04 {public static void main(String[] args) {long s1 = System.currentTimeMillis();Map<String, Object> dataMap = objectToMap(new User().setUser());long s2 = System.currentTimeMillis();System.out.println("花费时间毫秒:"+(s2-s1));System.out.println(dataMap);}public static Map<String, Object> objectToMap(Object object){Map<String,Object> dataMap = new HashMap<>();BeanMap beanMap = BeanMap.create(object);for (Object key : beanMap.keySet()) {dataMap.put(key+"",beanMap.get(key));}return dataMap;}
}

执行多次耗时一般在180-280毫秒之间,甚至更多

 

 


http://chatgpt.dhexx.cn/article/WWd6RR0s.shtml

相关文章

Java对象转Map的解决办法_java对象转map怎么操作?map如何转化成Java对象?

在我们学习Java的时候经常需要用到map转对象&#xff0c;在学校呢&#xff0c;老师教的时候也格外用心&#xff0c;相反&#xff0c;对象转map讲得就很精简了&#xff0c;让大多数的小伙伴不能理解透彻&#xff0c;但是&#xff0c;Java对象转map有的时候也需要用到&#xff0c…

Java对象和Map互相转换的6种方式

前言 开发小伙伴们通常会需要使用到对象和Map互相转换的开发场景&#xff0c;本文主要介绍6种方式&#xff0c;欲知详情&#xff0c;请问下文分解。 实体类&#xff1a; Data class User {Long id;String name;Integer age; }1、hutool工具 官网&#xff1a;https://www.hutoo…

linux vim 强制退出 不保存

linux vim 强制退出不保存T

Docker安装及若干问题解析

按照i春秋的教程我从https://blog.csdn.net/qq_27818541/article/details/73647797这个博客获得了指导。 博客上已经注明了&#xff0c;下面两个方式任选其一&#xff0c;我这个呆子两种方法都试了。。&#xff0c;重要的文字就应该用其他颜色的笔标出来... 全部步骤用完之后&a…

小程序转发链接打开异常(链接有中文)

小程序转发出去的链接参数里面有中文的话&#xff0c;点击打开页面异常,因为链接参数异常&#xff0c;导致接口获取数据异常&#xff0c;然后页面无法正常显示 这是因为中文在转发的时候让http协议自动进行了url转码&#xff0c;转成了一串这种形式的字母%e8%bd%ac%e7%a0%81%e6…

微信小程序 转发 分享功能(二)

关于小程序的转发&#xff1a; 最简单的就是点击小程序右上角菜单“转发”按钮直接分享&#xff0c;不过这种分享有点不太友好&#xff0c;实用性也不强。 当然&#xff0c;你可以自定义分享内容&#xff0c;包括标题&#xff0c;简介&#xff0c;图片及分享的小程序页面路径。…

微信小程序转发中文出现乱码

微信小程序转发中文出现乱码 在开发项目的过程中出现转发bug&#xff0c;转发给其他用户时点开界面出现乱码 界面参数由父界面传输 原因 在网上查了一圈&#xff0c;是说微信小程序的编码方式并非UTF8&#xff0c;所以导致出现乱码 解决方案 使用Js的decodeURI&#xff0…

微信小程序转发动态消息的问题

最近项目中需要用到微信小程序转发动态消息的功能&#xff0c;遇到了一些坑&#xff0c;最终测试成功了&#xff0c;现在分享给大家。 微信官方的动态消息参考文档在这里&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share/updatabl…

关于小程序转发分享功能,并实现计数埋点方式

小程序分享 前言思路关于分享关于计数埋点 效果使用page分享全局分享单页分享 使用Component组件分享全局分享单页面分享 计数埋点 前言 之前做的分享都是单页面分享&#xff0c;现在发现公司需要做所有页面的分享&#xff0c;然后指定页面和全局不一样&#xff0c;并且实现记…

微信小程序转发

微信小程序转发涉及以下4个方法: 1、Page.onShareAppMessage({}) 设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据 2、wx.showSahreMenu() 用户点击右上角后,显示“转发”按钮 3、wx.hideShareMenu() 隐藏转发按钮,无视 Page.onShareAppMessage({}) …

(干货)微信小程序转发好友

今天简单地说下微信小程序的转发功能&#xff0c;为什么要简单的说下呢&#xff0c;因为主要讲的就是转发给好友或者群组&#xff0c;还有一种是分享到朋友圈&#xff0c;这种就比较复杂一点了&#xff0c;先稍微透漏一点&#xff0c;分享到朋友圈主要是两种方法&#xff0c;一…

微信小程序 转发

微信小程序的转发分两张情况 1.自定义的转发按钮 2.小程序自带的右上角的转发按钮 小程序 API https://developers.weixin.qq.com/miniprogram/dev/api/share.html 下图是自定义的转发按钮 xml <view classfl stylewidth:55rpx;height:55rpx;margin-left:50%; margin…

小程序分享功能实现php,微信小程序转发好友的功能

今天简单地说下微信小程序的转发功能&#xff0c;为什么要简单的说下呢&#xff0c;因为主要讲的就是转发给好友或者群组&#xff0c;还有一种是分享到朋友圈&#xff0c;这种就比较复杂一点了&#xff0c;先稍微透漏一点&#xff0c;分享到朋友圈主要是两种方法&#xff0c;一…

微信小程序转发朋友圈

微信小程序转发朋友圈 接触过微信小程序的都应该知道微信小程序只开辟了一个转发给好友和群的api&#xff0c;如果想发送到朋友圈&#xff0c;方法大同小异&#xff0c;无非就是保存图片到本机 然后在进行朋友圈发表&#xff0c;话不多说&#xff0c;先上图&#xff0c;然后上…

unapp微信小程序转发分享、携带参数

一、第一种方式&#xff1a; // 开启小程序原生右上角分享按钮uni.showShareMenu({// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.htmlwithShareTicket: true,menus: [shareAppMessage, shareTimeline]//开启转发好友和转发朋友圈按钮});…

SQLServer2008 sa登录错误18456

基本每次重装数据库&#xff0c;使用sa身份和ip方式登录数据库&#xff0c;不出意外都会出现这个错误&#xff0c;18456&#xff0c;如下&#xff1a; 这个错误一般由三个原因引起&#xff0c;登录方式设置错误、sa设置错误和IP方式是否开启&#xff0c;下面依次解决这三个问题…

SQL Server2014“用户'sa'登录失败,错误18456”问题

子丰在安装SQL Server2014的过程中明明选择了使用Windows身份验证和SQL Server身份验证混合模式&#xff0c;可是安装完之后却不能使用SQL Server身份验证登录&#xff0c;提示“用户sa登录失败&#xff0c;错误18456”。 经过子丰一番研究才最终解决了问题。 1. 使用Windows身…

【SQL Server 2017】18456错误/管道的另一端无任何进程错误 解决方法

解决方法 windows身份登录后&#xff0c;找到&#xff1a;安全性->登录名->sa&#xff0c;然后右击选择属性 选择常规&#xff08;输入新的密码&#xff0c;取消实施密码策略&#xff09; 右击服务器名——重新启动——关闭数据库连接&#xff0c;退出程序——用sa登录…

SQL 18456登陆错误问题(已解决)

SQL 18456登陆错误 首先要将登陆验证方式改为混合验证 参考链接&#xff1a;https://blog.csdn.net/qq_34173893/article/details/80142959 解决方案&#xff1a;https://www.cnblogs.com/giserblog/p/3585442.html?utm_sourcetuicool 取消登陆锁定 如果遇到取消失败的情况&am…

SQLServer创建用户登录出现错误18456

使用SQLServer创建用户并登录的过程中总是出现问题&#xff0c;查找方法不易&#xff0c;于是就打算把解决方法写一下&#xff0c;方便后来的小伙伴查找 1、在本机数据库处右键&#xff0c;选择属性&#xff0c;点击打开 选择左侧的安全性&#xff0c;右侧服务器身份验证选择S…