Bean和Map互转
import com.alibaba.fastjson.JSONObject;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BeanUtils {
public static <T> List<T> mapListToBeanList(List<Map> mapList, Class<T> beanClass) {
List<T> list = new ArrayList<>();
if (mapList != null && mapList.size() > 0) {
for (Map item : mapList) {
T bean = new JSONObject(item).toJavaObject(beanClass);
list.add(bean);
}
}
return list;
}
public static <T> T mapToBean(Map map, Class<T> beanClass) {
if (map == null) {
return null;
}
return new JSONObject(map).toJavaObject(beanClass);
}
public static List<Map> beanListToMapList(List objList) {
List<Map> list = new ArrayList<>();
if (objList != null && objList.size() > 0) {
for (Object obj : objList) {
Map bean = beanToMap(obj);
list.add(bean);
}
}
return list;
}
// Bean --> Map
public static Map<String, Object> beanToMap(Object obj) {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
// 过滤class属性
if (!key.equals("class")) {
// 得到property对应的getter方法
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
}
} catch (Exception e) {
throw new RuntimeException("Bean转Map失败", e);
}
return map;
}
}
List<Map> 排序
Collections.sort(list, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Date createDate1 = (Date) o1.get("createDate");
Date createDate2 = (Date) o2.get("createDate");
// 倒序
return createDate2.compareTo(createDate1);
}
});