ibatis中ProbeFactory.getProbe()类 list 转 map

来源:互联网 发布:mac 忘记开机密码 编辑:程序博客网 时间:2024/06/16 09:25

private static final Probe PROBE = ProbeFactory.getProbe();


 ProbeFactory.getProbe()  是主要的方法,来源于ibatis API  ,记录此工具类


1、getValueList(List<E> list, String valueProp) 此方法可以将List<object>  object 对象 中某一个元素取出来重新组成List 数组

2、listforListMap(List<E> list,String keyProp, String valueProp)  此方法 List<Object>  object 对象中某一个元素 当做key  如果 valueProp = null   则 object 为对应map 的value值  ,反之,object 元素中另一个元素  充当map value值



3、listforListMap(List<E> list,String keyProp, String valueProp)   与第2个类似,不同点是map 的value值对应的是List

/** *         <pre> * 批量获取map中的值 * </pre> * * @param <K> * @param <V> * @param keys * @param source * @return */public static <K, V> List<V> getAllFormMap(List<K> keys, Map<K, V> source) {List<V> values = Collections.emptyList();if (keys != null && !keys.isEmpty() && source != null&& !source.isEmpty()) {values = new ArrayList<V>();for (K k : keys) {values.add(source.get(k));}}return values;}/** *  *         <pre> * 从List中获取valueProp组成一个新的list * </pre> * * @param <E> * @param list * @param valueProp * @return */public static <E, K> List<K> getValueList(List<E> list, String valueProp) {List<K> valueList = Collections.emptyList();if (CollectionUtils.isNotEmpty(list)) {list.removeAll(nullCollection());valueList = new ArrayList<K>(list.size());for (E e : list) {@SuppressWarnings("unchecked")K value = (K) PROBE.getObject(e, valueProp);valueList.add(value);}}return valueList;}/** *  *         <pre> * 用list生成一个map,keyProp 为指定的key,valueProp 为指定是value * </pre> * * @param <K> * @param <V> * @param <E> * @param list * @param keyProp * @param valueProp * @return */@SuppressWarnings("unchecked")public static <K, V, E> ConcurrentHashMap<K, V> listforMap(List<E> list, String keyProp,String valueProp) {        ConcurrentHashMap<K, V> map = new ConcurrentHashMap<K, V>();if (CollectionUtils.isNotEmpty(list)) {list.removeAll(nullCollection());for (E object : list) {K key = (K) PROBE.getObject(object, keyProp);Object value = null;if (StringUtils.isEmpty(valueProp)) {value = object;} else {value = PROBE.getObject(object, valueProp);}if(null != key) {map.put(key, (V) value);}}}return map;}/** *  *         <pre> * list 生成一个Map<K,List<V>> * </pre> * * @param <K> * @param <V> * @param <E> * @param list * @param keyProp * @param valueProp * @return */@SuppressWarnings("unchecked")public static <K, V, E> Map<K, List<V>> listforListMap(List<E> list,String keyProp, String valueProp) {Map<K, List<V>> map = Collections.emptyMap();if (CollectionUtils.isNotEmpty(list)) {list.removeAll(nullCollection());map = new HashMap<K, List<V>>(list.size());V value = null;for (E object : list) {K key = (K) PROBE.getObject(object, keyProp);if (StringUtils.isEmpty(valueProp)) {value = (V) object;} else {value = (V) PROBE.getObject(object, valueProp);}List<V> values = map.get(key);if (values == null) {values = new ArrayList<V>();}values.add(value);map.put(key, values);}}return map;}


0 0
原创粉丝点击