创建对象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毫秒之间,甚至更多
















