根据对象某一字段名,获取字段值,将List转换为Map中包含list,Key为字段值,Value为相同字段值的对象list,快速定位具有相同字段值的对象,转换之后便于在Map中根据字段值快速查找相同字段值的对象
//List转Map
public static <K, V> Map<K, List<V>> getMapByListAndGroup(List<V> list, String field) {
Map<K, List<V>> map = new HashMap<>();
if (list == null) {
return map;
}
List<V> objList;
for (V obj : list) {
Class<?> clazz = obj.getClass();
Field f;
K fieldValue = null;
try {
f = clazz.getDeclaredField(field);
f.setAccessible(true);
fieldValue = (K) f.get(obj);
} catch (Exception e) {
e.printStackTrace();
}
if (map.containsKey(fieldValue)) {
objList = map.get(fieldValue);
} else {
objList = new ArrayList<>();
}
objList.add(obj);
map.put(fieldValue, objList);
}
return map;
}