javabean与map的转换有很多种方式,比如:

1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个bean,就需要12秒!!!不推荐使用

2、通过java反射,获取bean类的属性和值,再转换到map对应的键值对中,这种方法次之,但稍微有点麻烦

3、通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,它跟第二种方式的区别就是因为使用了缓存,初次创建bean时需要初始化,之后就使用缓存,所以速度极快,经测试,循环bean和map的转换10000次,仅需要300毫秒左右。

所以,推荐第3种方式。  以下是相关代码:

/**

* 将对象装换为map

* @param bean

* @return

*/

public static Map beanToMap(T bean) {

Map map = Maps.newHashMap();

if (bean != null) {

BeanMap beanMap = BeanMap.create(bean);

for (Object key : beanMap.keySet()) {

map.put(key+"", beanMap.get(key));

}

}

return map;

}

/**

* 将map装换为javabean对象

* @param map

* @param bean

* @return

*/

public static T mapToBean(Map map,T bean) {

BeanMap beanMap = BeanMap.create(bean);

beanMap.putAll(map);

return bean;

}

/**

* 将List转换为List>

* @param objList

* @return

* @throws JsonGenerationException

* @throws JsonMappingException

* @throws IOException

*/

public static List> objectsToMaps(List objList) {

List> list = Lists.newArrayList();

if (objList != null && objList.size() > 0) {

Map map = null;

T bean = null;

for (int i = 0,size = objList.size(); i < size; i++) {

bean = objList.get(i);

map = beanToMap(bean);

list.add(map);

}

}

return list;

}

/**

* 将List>转换为List

* @param maps

* @param clazz

* @return

* @throws InstantiationException

* @throws IllegalAccessException

*/

public static List mapsToObjects(List> maps,Class clazz) throws InstantiationException, IllegalAccessException {

List list = Lists.newArrayList();

if (maps != null && maps.size() > 0) {

Map map = null;

T bean = null;

for (int i = 0,size = maps.size(); i < size; i++) {

map = maps.get(i);

bean = clazz.newInstance();

mapToBean(map, bean);

list.add(bean);

}

}

return list;

}

关于利用BeanMap进行对象与Map的相互转换的介绍和代码就到这里,希望能对大家有所帮助。如果您有什么问题可以给我留言,小编会及时回复大家的。感谢大家对本站的支持。

java对象转为map_浅谈对象与Map相互转化相关推荐

  1. java list数组排序_浅谈对象数组或list排序及Collections排序原理

    常需要对list进行排序,小到List,大到对自定义的类进行排序.不需要自行归并或堆排序.简单实现一个接口即可. 本文先会介绍利用Collections对List进行排序,继而讲到Collection ...

  2. 浅谈对象的深拷贝和浅拷贝

    浅谈对象的深拷贝和浅拷贝 一.为什么使用对象的拷贝? 1.在普通数据类型赋值 let a=10let b=aa=20console.log(a)//a=20console.log(a)//b=10 因 ...

  3. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  4. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

  5. java对象头markword_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  6. 浅谈对象生存期与内存管理(转)

    .net内存回收与Dispose﹐Close﹐Finalize方法       一. net的对象使用一般分为三种情况﹕ 1.创建对象       2.使用对象       3.释放对象 二.创建对象 ...

  7. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  8. java 多线程同步_浅谈Java多线程(状态、同步等)

    Java多线程是Java程序员必须掌握的基本的知识点,这块知识点比较复杂,知识点也比较多,今天我们一一来聊下Java多线程,系统的整理下这部分内容. 一.Java中线程创建的三种方式: 1.通过继承T ...

  9. java虚拟机类加载机制浅谈_浅谈Java虚拟机(三)之类加载机制

    在<浅谈Java虚拟机>这篇文章中,我们提到了JVM从操作系统方面来说,可以将其看做是一个进程,分别有类加载器子系统,执行引擎子系统和垃圾收集子系统.这一篇文章就简单的来谈一下类加载器子系 ...

  10. java缓存同步_浅谈JSON的数据交换、缓存问题和同步问题

    JSON轻量级的数据交换格式 相对于XML来说,JSON的解析速度更快,文档更小. JSON的格式 {属性名:属性值,属性名:属性值,--} 属性名的类型可以是string,number,boolea ...

最新文章

  1. php之cookie
  2. 利用Azure Backup备份和恢复虚拟机(2)
  3. Java虚拟机详解(七)------虚拟机监控和分析工具(1)——命令行
  4. android内存泄漏原因分析,Android Studio3.6的内存泄漏检测功能 VS LeakCanary
  5. AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】
  6. Linux中使用tar打包解包查看的使用方法
  7. 【云图】如何制作中国贪官落马图?
  8. 自动化测试中的测试执行自动化
  9. 初学python-练习_1使用python编写计算班级学生平均分程序
  10. 网页加载CAD图纸的两个方案对比说明
  11. 在大学里我们应该学习什么
  12. 【工作日记18】渗透测试之xml注入攻击、CRLF漏洞
  13. 腾讯掀起史上最大一轮管理干部裁撤:从月入2万+到领4千工资的中年们
  14. android全平台基于ffmpeg解码本地MP4视频推流到RTMP服务器
  15. java计算机毕业设计信用卡增值业务系统小程序用户端源码+mysql数据库+lw文档+系统+调试部署
  16. git更新远程代码到本地仓库的命令
  17. [六点]Unity零基础实战:古迹探险(一)
  18. 《统计学基于R》:第八章 方差分析
  19. 2023年美赛春季赛 赛题浅析
  20. Python 图片转ICO

热门文章

  1. hustoj 忘记admin密码的解决方案
  2. 软件测试 | 状态迁移法
  3. my97前端日期插件使用示例
  4. 【原理+实战】AI所有领域SOTA综述 (一)语音识别
  5. PVE直通Intel核显虚拟机配置ffmpeg-qsv硬件加速
  6. UML统一建模语言习题一
  7. 入手kindle 3
  8. MeScroll 移动端刷新,分页
  9. VMware安装win10:需win10虚拟机专用镜像,不是真机装系统的ISO镜像
  10. VS2012配置WTL