参考https://cloud.tencent.com/developer/article/1033706

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class ListToMap {
//list转化为map
public static <K, V> Map<K, V> listToMap(List<V> vList, String kName) {
Map<K, V> map = new HashMap<K, V>();
if (vList == null || kName == null || vList.size() == 0) {
return map;
}
Field kField = getField(vList.get(0).getClass(), kName);
for (V v : vList) {
try {
map.put((K) kField.get(v), v);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return map;
}
//获取key对应的类型字段
private static <V> Field getField(Class<V> clazz, String kName) {
if (clazz == null || kName == null) {
return null;
}
for (Field fieldElem : clazz.getDeclaredFields()) {
fieldElem.setAccessible(true);
if (fieldElem.getName().equals(kName)) {
return fieldElem;
}
}
return null;
}
//调用示例
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
List<Person> pList = new ArrayList<Person>();
Person p1 = new Person(2, "taxuexing");
pList.add(p1);
Person p2 = new Person(3, "jikewang");
pList.add(p2);
Map<Integer, Person> map = ListToMap.listToMap(pList, "age"); System.out.println(map.get(2).getUserName());
System.out.println(map.get(3).getUserName());
}
}

  

public class Person {
private String userName;
private int age;
Person(){ }
Person(int age, String userName){
this.age = age;
this.userName = userName;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

  

最新文章

  1. jquery瀑布流的制作
  2. NOIP2014提高组解方程
  3. iOS架构基础
  4. centos 7.0 菜鸟接触命令 记录
  5. MySQL的表的优化和列类型的选择
  6. 【转】ChainMapper 实例理解二
  7. asp.net 防止页面刷新或后退引起重复提交
  8. jquery .net 无刷新多文件上传
  9. ERROR CL .exe……错误
  10. c++异常处理第四篇---不使用try catch语句,使用Loki::ScopeGuard
  11. Python基础之函数二
  12. Mongo 常用操作
  13. 1896 互不侵犯 洛谷 luogu
  14. Web轻量级扫描工具Skipfish
  15. docker 和 vagrant 作为程序发布 和 开发的独立而统一的运行环境
  16. (原创)C++11改进我们的程序之简化我们的程序(四)
  17. IOS端的摇一摇功能
  18. markdown公式编辑参考
  19. list add() 和 addall()的区别
  20. SQL使用union合并查询结果(转载)

热门文章

  1. Kubernetes 1.8.x 全手动安装教程----转自Kubernetes中文社区(部分内容根据实验环境做了些修改,特此感谢Kubernetes中文社区)
  2. adb push和adb install区别
  3. centOS6.6网络设置
  4. MySQL查询提示
  5. LINUX系统一一CentOS6.5之tomcat安装
  6. 实现了一下Mp3播放器的功能
  7. 解决:python 连接Oracle 11g 报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
  8. hdu4497-GCD and LCM-(欧拉筛+唯一分解定理+组合数)
  9. location search的中文加密
  10. 移动端引用echarts的折线图