zoukankan      html  css  js  c++  java
  • javaBean与map的相互转换

    1、通过json工具先将bean转换为json,再将json转换为map,这种方式效率很低,不推荐

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

    3、通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,该方式利用Java反射和缓存,初次创建bean时需要初始化,之后就使用缓存,所以速度极快。

    mport java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    import net.sf.cglib.beans.BeanMap;
     
    public class BeanMapUtils {
    	/**
    	 * 将对象装换为map
    	 * 
    	 * @param bean
    	 * @return
    	 */
    	public static <T> Map<String, Object> beanToMap(T bean) {
    		Map<String, Object> map = new HashMap<>();
    		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
    	 */
    	public static <T> List<Map<String, Object>> objectsToMaps(List<T> objList) {
    		List<Map<String, Object>> list = new ArrayList<>();
    		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 = new ArrayList<>();
    		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;
    	}
    }
    
  • 相关阅读:
    状态模式
    适配器模式
    观察者模式
    浮点数在内存中的存储方式
    建造者模式
    外观模式
    模版方法模式
    原型模式
    Python 学习笔记6 变量-元组
    Python 学习笔记5 变量-列表
  • 原文地址:https://www.cnblogs.com/wangjintao-0623/p/12697710.html
Copyright © 2011-2022 走看看