提供了List转为Map的2种方法,第一种convertOne是常规转换,以key作为map的key,以list中的E作为value;第二种则以key作为map的key,以list作为value

@SuppressWarnings("unchecked")
final public class MapConverter {private static final String GET = "get";private MapConverter() {throw new AssertionError("Util禁止反射实例化");}public static <K, E> Map<K, E> convertOne(List<E> list, String key) {if (CollectionUtils.isEmpty(list)) {return null;}Map<K, E> map = null;try {Method getM = getMethod(list.get(0).getClass(), key);map = new HashMap<>();for (E en : list) {K k = (K) getM.invoke(en);map.put(k, en);}} catch (Exception e) {e.printStackTrace();}return map;}public static <K, E> Map<K, List<E>> convertList(List<E> list, String key) {if (CollectionUtils.isEmpty(list)) {return null;}Map<K, List<E>> map = null;try {Method getM = getMethod(list.get(0).getClass(), key);map = new HashMap<>();for (E en : list) {K k = (K) getM.invoke(en);List<E> res = map.get(k);if (res != null) {res.add(en);} else {List<E> l1 = new ArrayList<>();l1.add(en);map.put(k, l1);}}} catch (Exception e) {e.printStackTrace();}return map;}private static Method getMethod(Class clazz, String key) throws NoSuchMethodException {if (key.startsWith(GET)) {return clazz.getMethod(key);}if (Character.isUpperCase(key.charAt(0))) {clazz.getMethod(GET + key);}return clazz.getMethod(GET + Character.toUpperCase(key.charAt(0)) + key.substring(1));}
}

转载于:https://www.cnblogs.com/zad27/p/10991138.html

List - Map 工具类,list转为map相关推荐

  1. java map转xml 工具类_xml和map互转工具类

    /*** xml转map工具类 *@authorzhangyao **/ public classXmlToMapUtil {/*** xml转map 不带属性 *@paramxmlStr *@par ...

  2. java工具类-bean转map

    工作常常遇到将java的Bean对象转化为Map,或者将Map转为Bean对象. 常见的手段 通过json工具,将Bean转json,再将json转Map 效率低 jdk的反射,获取类的属性,进行转化 ...

  3. java vo转map_javabean实体类对象转为Map类型对象的方法(转发)

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map beanToMap(Object obj) { Map params = new HashM ...

  4. javabean实体类对象转为Map类型对象的方法

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...

  5. 工具类-汉字转为汉语拼音首字母

    汉字转换为汉语拼音首字母,英文字符不变,特殊字符丢失 支持多音字,生成方式如(长沙市长:cssc,zssz,zssc,cssz) 首先需Pinyin4j的jar包,代码如下,可直接使用 public ...

  6. java解析xml转为Map

    之前开发过一个解析多层级xml文件的工具类,后来处理的时候发现,这种方式得到的map或json集合多一个key标签,在解析的时候会比较麻烦,于是根据需要在原有方法的基础上写出了另外的处理方法,总结记录 ...

  7. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  8. Android开发常用工具类

    来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...

  9. 整理Java相关的工具类Utils,持续更新中,建议收藏【目前更新至24】

    文章目录 1.BigDecimalUtil 2.CaptchaUtil 图片验证码工具类 3.CoordinateTransformUtil 坐标系转换工具类 4.DateUtil 日期加减工具类 5 ...

最新文章

  1. 鸿蒙法则的能力,真正厉害的人,都懂得这五个做事法则,如能悟透,成功不难...
  2. NA-NP-IE系列实验35:标准ACL
  3. VMware Server 2.0简单学习!
  4. matplotlib关于坐标轴数据显示的几个重要参数
  5. C++ 对二维数组排序 升序 降序
  6. python rfind函数用法_Python语法速查:字符串格式简单处理、子串查找与判断方法?...
  7. 【Redis学习】Redis开启多个端口
  8. webpack-dev-server 搭建本地服务以及浏览器实时刷新
  9. div中iframe高度自适应问题
  10. 邓总的vim配置,需要的自己拿走~
  11. oracle的口令就是密码吗,如何修改Oracle用户的密码(不改变原密码)
  12. 太阳升起并下落的小动画-SWIFT
  13. linux 空信息,为什么recv()函数收到空消息?
  14. 基于jquery的全局ajax函数处理session过期后的ajax操作
  15. 如何导出python所有的安装包
  16. MIDI文件格式(一)
  17. 在Windows8系统下exe格式会计课件下载播放帮助图解
  18. 闲置eSATA接口影响Windows7启动速度案例分析
  19. 【libmodbus-vs2019】测试使用
  20. gif动态加载图和动态表情包的制作

热门文章

  1. linux重设mysql密码是多少_Linux学习:重设mysql root密码
  2. 用python画图所需要的插件_用Python画图
  3. java 日期处理 口诀_java时间处理常用方法工具类
  4. grid++中打印表格时怎么让每页有打印表头_1分钟!学会快速打印标题行,轻松搞定不加班...
  5. js超出文字个数展示省略号
  6. Science上发表的超赞聚类算法
  7. 旁瓣对消原理_雷达天线旁瓣对消技术
  8. 关于Android软件更新
  9. 周末,说声php的settergetter(魔术)方法,你们辛苦了
  10. Bootstrap导航栏