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

  1. import java.lang.reflect.Field;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. public class ListToMap {
  8. //list转化为map
  9. public static <K, V> Map<K, V> listToMap(List<V> vList, String kName) {
  10. Map<K, V> map = new HashMap<K, V>();
  11. if (vList == null || kName == null || vList.size() == 0) {
  12. return map;
  13. }
  14. Field kField = getField(vList.get(0).getClass(), kName);
  15. for (V v : vList) {
  16. try {
  17. map.put((K) kField.get(v), v);
  18. } catch (IllegalArgumentException e) {
  19. e.printStackTrace();
  20. } catch (IllegalAccessException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. return map;
  25. }
  26. //获取key对应的类型字段
  27. private static <V> Field getField(Class<V> clazz, String kName) {
  28. if (clazz == null || kName == null) {
  29. return null;
  30. }
  31. for (Field fieldElem : clazz.getDeclaredFields()) {
  32. fieldElem.setAccessible(true);
  33. if (fieldElem.getName().equals(kName)) {
  34. return fieldElem;
  35. }
  36. }
  37. return null;
  38. }
  39. //调用示例
  40. public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
  41. List<Person> pList = new ArrayList<Person>();
  42. Person p1 = new Person(2, "taxuexing");
  43. pList.add(p1);
  44. Person p2 = new Person(3, "jikewang");
  45. pList.add(p2);
  46. Map<Integer, Person> map = ListToMap.listToMap(pList, "age");
  47.  
  48. System.out.println(map.get(2).getUserName());
  49. System.out.println(map.get(3).getUserName());
  50. }
  51. }

  

  1. public class Person {
  2. private String userName;
  3. private int age;
  4. Person(){
  5.  
  6. }
  7. Person(int age, String userName){
  8. this.age = age;
  9. this.userName = userName;
  10. }
  11.  
  12. public String getUserName() {
  13. return userName;
  14. }
  15.  
  16. public void setUserName(String userName) {
  17. this.userName = userName;
  18. }
  19.  
  20. public int getAge() {
  21. return age;
  22. }
  23.  
  24. public void setAge(int age) {
  25. this.age = age;
  26. }
  27. }

  

list转map的更多相关文章

  1. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

  2. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  3. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  4. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. 多用多学之Java中的Set,List,Map

            很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ...

  6. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  7. MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析

    在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ...

  8. MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程

    在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...

  9. MapReduce剖析笔记之五:Map与Reduce任务分配过程

    在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...

  10. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

随机推荐

  1. 数据库连接池技术,c3p0

    百度 谷歌  http://commons.apache.org/   可以找到DBCP   ,  这里选择使用C3P0,百度一下.https://www.mchange.com/projects/c ...

  2. DAX2012 R3安装

    安装程序跟DAX2009大同小异,不过这验证需要的组件也太多了,简直是.NET Framework大阅兵啊,各种版本都需要安装,特别是VC++从2008一直装到2012,有点崩溃... DEMO数据的 ...

  3. Signing Your Applications(Android签名相关)

    In this document Signing Overview Signing in Debug Mode Signing in Release Mode Signing Android Wear ...

  4. macbook pro。已经连接上wifi,但是,不能上网的问题

    有天,macbook pro关机后,再打开就上不了网了,后面网上看了,说是安装了 lantern出问题,我一想,有次关机lantern是被我强制关掉的.所以再次打开lantern就可以 上网了,然后正 ...

  5. Java8 Optional的简单操作

    我们经常会遇到这种情况:首先判断一个对象是否为null,如果不为null,获取一个对象中的一个属性,如果该属性不为null,又获取该属性的属性,如果该属性的属性不为null,又获取属性的属性的属性: ...

  6. work单进程群发通知 后面会增加Channel组件的分组推送以及集群推送篇章

    <?phpuse Workerman\Worker;use Workerman\Lib\Timer; require_once '../../web/Workerman/Autoloader.p ...

  7. linux c 编程相关资料

    1. linux下的错误定义及其错误捕获:http://blog.csdn.net/tigerjibo/article/details/6819891 2. 在线 c 系统调用手册 http://c. ...

  8. AssetBundle 策略

    [AssetBundle 策略] 1.Logical Entity Grouping.按逻辑功能分. Examples Bundling all the textures and layout dat ...

  9. db2start提示SQL5043,关闭连接终端tty

    db2 V10.3启动的时候提示: 问题1: db2start执行后提示: SQL1072C  The database manager resources are in an inconsisten ...

  10. 安装Eclipse Maven插件的几种方法

    文章出处:http://blog.csdn.net/lfsfxy9/article/details/9397937 感谢作者的分享! 昨天直接在机器上配置了Maven环境,今天顺便把Eclipse等I ...