浅谈对象与Map相互转化

发布时间 - 2026-01-11 03:19:12    点击率:

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 <T> Map<String, Object> beanToMap(T bean) { 
  Map<String, Object> 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> T mapToBean(Map<String, Object> map,T bean) { 
  BeanMap beanMap = BeanMap.create(bean); 
  beanMap.putAll(map); 
  return bean; 
} 
/** 
 * 将List<T>转换为List<Map<String, Object>> 
 * @param objList 
 * @return 
 * @throws JsonGenerationException 
 * @throws JsonMappingException 
 * @throws IOException 
 */ 
public static <T> List<Map<String, Object>> objectsToMaps(List<T> objList) { 
  List<Map<String, Object>> list = Lists.newArrayList(); 
  if (objList != null && objList.size() > 0) { 
    Map<String, Object> 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<Map<String,Object>>转换为List<T> 
 * @param maps 
 * @param clazz 
 * @return 
 * @throws InstantiationException 
 * @throws IllegalAccessException 
 */ 
public static <T> List<T> mapsToObjects(List<Map<String, Object>> maps,Class<T> clazz) throws InstantiationException, IllegalAccessException { 
  List<T> list = Lists.newArrayList(); 
  if (maps != null && maps.size() > 0) { 
    Map<String, Object> 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  # 对象转换成json  # json  # 转换为对象  # AngularJS操作键值对象类似java的hashmap(填坑小结)  # 使用GSON库将Java中的map键值对应结构对象转换为JSON  # Java遍历Map对象的四种方式  # JS自定义对象实现Java中Map对象功能的方法  # 转换为  # 有什么  # 如果您  # 这种方法  # 推荐使用  # 极高  # 就到  # 很低  # 能对  # 先将  # 再将  # 第二种  # 小编  # 极快  # 给我留言  # 对中  # 感谢大家  # 键值  # 时需  # 类中 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 移动端脚本框架Hammer.js  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel如何使用模型观察者?(Observer代码示例)  php485函数参数是什么意思_php485各参数详细说明【介绍】  使用Dockerfile构建java web环境  Laravel如何使用Blade组件和插槽?(Component代码示例)  如何在景安服务器上快速搭建个人网站?  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何撰写建站申请书?关键要点有哪些?  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何为API生成Swagger或OpenAPI文档  EditPlus中的正则表达式 实战(4)  如何快速登录WAP自助建站平台?  ,南京靠谱的征婚网站?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  三星网站视频制作教程下载,三星w23网页如何全屏?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  网站图片在线制作软件,怎么在图片上做链接?  如何在阿里云ECS服务器部署织梦CMS网站?  Android中AutoCompleteTextView自动提示  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel Session怎么存储_Laravel Session驱动配置详解  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  JavaScript常见的五种数组去重的方式  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Python文件操作最佳实践_稳定性说明【指导】  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel distinct去重查询_Laravel Eloquent去重方法  如何在IIS7中新建站点?详细步骤解析  如何用美橙互联一键搭建多站合一网站?  长沙做网站要多少钱,长沙国安网络怎么样?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何续费美橙建站之星域名及服务?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  JavaScript模板引擎Template.js使用详解  如何在万网自助建站平台快速创建网站?  SQL查询语句优化的实用方法总结  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何用wdcp快速搭建高效网站?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧