实体对象转成Map Map转成实体对象
程序员文章站
2022-06-15 09:47:05
...
public class MapBeanUtil {
/**
* 实体对象转成Map
*
* @param obj 实体对象
* @return
*/
public static Map<String, Object> object2Map(Object obj) {
Map<String, Object> map = new HashMap<>();
if (obj == null) {
return map;
}
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
try {
for (Field field : fields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/**
* Map转成实体对象
*
* @param map 实体对象包含属性
* @param clazz 实体对象类型
* @return
*/
public static Object map2Object(Map<String, Object> map, Class<?> clazz) {
if (map == null) {
return null;
}
Object obj = null;
try {
obj = clazz.newInstance();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
continue;
}
field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
/**
* 根据map中的某个key 去除List中重复的map
*
* @param list
* @param mapKey
* @return
* @author shijing
*/
public static List<Map<String, Object>> removeRepeatMapByKey(List<Map<String, Object>>
list, String mapKey) {
if (CollectionUtils.isEmpty(list)) {
return null;
}
//把list中的数据转换成msp,去掉同一id值多余数据,保留查找到第一个id值对应的数据
List<Map<String, Object>> listMap = new ArrayList<>();
Map<String, Map> msp = new HashMap<>();
for (int i = list.size() - 1; i >= 0; i--) {
Map map = list.get(i);
String id = (String) map.get(mapKey);
map.remove(mapKey);
msp.put(id, map);
}
//把msp再转换成list,就会得到根据某一字段去掉重复的数据的List<Map>
Set<String> mspKey = msp.keySet();
for (String key : mspKey) {
Map newMap = msp.get(key);
newMap.put(mapKey, key);
listMap.add(newMap);
}
return listMap;
}
}
上一篇: opencv3 LK光流法跟踪特征点
下一篇: js删除数组里的某一项