List -> Map Tools, list into map

Providing two methods into the Map List, first convertOne conventional conversion, as a key in key map to a list of E value; a second key map key places to list a value 


@ the SuppressWarnings ( "an unchecked" ) Final public class MapConverter { Private static Final String the GET = "GET" ; Private MapConverter () { the throw new new AssertionError with ( "Util prohibiting reflection instantiated" ); } public static <K, E> the Map <K , E> convertOne (List <E> List, String Key) { IF (CollectionUtils.isEmpty (List)) { return null ; } the 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)); } }

 

Guess you like

Origin www.cnblogs.com/zad27/p/10991138.html