失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > List - Map 工具类 list转为map

List - Map 工具类 list转为map

时间:2020-07-02 05:09:46

相关推荐

List - Map 工具类 list转为map

提供了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));}}

如果觉得《List - Map 工具类 list转为map》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。