在编码过程中,往往我们有需要将List转换为Map,接下来我们就看看如何实现:
package list_to_map;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 根据指定的实体类中的列名,将list转换成map
* @author www
*
*/
public class ListToMap {
public static <K, V> Map<K,V> getMapFromListByProperty(List<V> list, String propertyName, Class propertyClass){
if(isEmpty(list)) {
return new HashMap<K, V>();
}
Class<?> clz = list.get(0).getClass();
Map<K,V> resultMap = new HashMap<K, V>(list.size());
Method mth = getPropertyMethod(clz,propertyName);
for(Object obj : list) {
Object value = null;
try {
value = mth.invoke(obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
if(value == null) {
continue;
}
resultMap.put((K) propertyClass.cast(value), (V)obj);
}
return resultMap;
}
/**
* 获取属性的get()方法
* @param clz
* @param propertyName
* @return