javabean和map的转换有很多方法,例如:
1、通过对象映射器将bean转换为json,然后再将json转换为map,这种方法较为繁琐,效率较低。 经过测试,循环变换10000个bean需要12秒! 呃! 呃! 不推荐
2、通过Java反射,获取bean类的属性和值并将其转换为对应于map的键值对的方法次之,但有点麻烦
3、通过net.sf.cglib.beans.BeanMap类的方法。 这个方式非常有效率。 与第二种方式的不同之处在于,因为使用缓存,首次创建bean时需要初始化,然后使用缓存,速度非常快,经过测试,bean和map的转换只需要10000次循环,只需要300毫秒
所以,我推荐第三种方式。 相关代码如下。
//*
*用地图替换对象
* @param bean
* @return
*/
公共静态映射,objectbeantomap{
MapString,Object map=Maps.newHashMap (;
豆豆!=null ) {
bean mapbean map=bean map.create (bean;
对象密钥: bean map.keyset () () ) ) ) )。
map.put(key ',beanmap.get ) key );
() ) ) ) )。
() ) ) ) )。
返回地图;
() ) ) ) )。
//*
将map替换为javabean对象
* @param map
* @param bean
* @return
*/
publicstatictmaptobean (mapstring,Object map,T bean ) {
bean mapbean map=bean map.create (bean;
beanmap.putall(map;
返回bean;
() ) ) ) )。
//*
将列表转换为列表映射,对象
* @param objList
* @return
* @ throwsjsongenerationexception
* @throws JsonMappingException
* @throws IOException
*/
公共静态列表映射,objectobjectstomaps{
ListMapString,Object list=Lists.newArrayList (;
if(objlist!=null objList.size ()0) {
映射,Object map=null;
T bean=null;
for(intI=0,size=objList.size ); i size; I ) {
bean=objlist.get(I;
map=beantomap(bean;
list.add(map;
() ) ) ) )。
() ) ) ) )。
返回列表;
() ) ) ) )。
//*
将列表映射,对象转换为列表
* @param maps
* @param clazz
* @return
* @throws InstantiationException
* @throws IllegalAccessException
*/
publicstatictlisttmapstoobjects (listmaps tring,Object maps,ClassT clazz ) throws InstantiationException,illlegalacccesssexcepepteption
ListT list=Lists.newArrayList (;
if (地图!=nullmaps.size(0) {
映射,Object map=null;
T bean=null;
for(intI=0,size=maps.size ); i size; I ) {
map=maps.get(I;
bean=clazz.newInstance (;
maptobean(map,bean;
list.add(bean );
() ) ) ) )。
() ) ) ) )。
返回列表;
() ) ) ) )。