根据list对象中的某个属性转换成map
/**
* 将对象中的某个属性作为map的key 将对象本身作为map的value构成成一个map
*
* @param fieldToKey 必须是obj的field 我们把field的getValue作为map的key
* @author mountain 2019-01-07 17:21
*/
public static <T, E> Map<T, E> listToMap(List<E> listObj, String fieldToKey) {
Map<T, E> map = new HashMap();
for (E obj : listObj) {
try {
String name = obj.getClass().getName();
Class.forName(name).newInstance();
Class aClass = obj.getClass();
Field declaredField;
declaredField = aClass.getDeclaredField(fieldToKey);
declaredField.setAccessible(true);
String methodName = parGetName(declaredField.getName());
Method method = aClass.getMethod(methodName);
T fieldVal = (T) method.invoke(obj, new Object[] {});
map.put(fieldVal, obj);
} catch (Exception e) {
logger.error("将对象中的某个属性作为map的key 将对象本身作为map的value构成成一个map出现异常", e);
}
}
return map;
}