/** * 将一个集合变成 Map。 * * @param typeOfMap Map 的类型 * @param coll 集合对象 * @param keyFieldName 采用集合中元素的哪个一个字段为键。 * @return Map 对象 */ public static <T extends Map<Object, Object>> Map<?, ?> coll2map( Class<T> typeOfMap, Collection<?> coll, String keyFieldName) { if (null == coll) return null; Map<Object, Object> map = createMap(typeOfMap); if (coll.size() > 0) { Iterator<?> it = coll.iterator(); Object obj = it.next(); Object key = LE.getPropertyValue(obj, keyFieldName); map.put(key, obj); for (; it.hasNext(); ) { obj = it.next(); key = LE.getPropertyValue(obj, keyFieldName); map.put(key, obj); } } return map; }
/** * 两个对象必须是相同类型的Bean 即getClass()相等,具备相同的方法属性签名,进行copy动作,可用于clone方法的内部实现 * * @param src 源对象 * @param to 目标对象(必须已经实例化) */ public static void copy(Object src, Object to) { if (src.getClass() != to.getClass()) return; String[] props = LE.getPropertyNames(to.getClass(), true); for (String prop : props) { Object value = LE.getPropertyValue(src, prop); LE.setPropertyValue(to, prop, value); } }
/** * 将一个数组变成 Map * * @param typeOfMap Map 的类型 * @param array 数组 * @param keyFieldName 采用集合中元素的哪个一个字段为键。 * @return Map 对象 */ public static <T extends Map<Object, Object>> Map<?, ?> array2map( Class<T> typeOfMap, Object array, String keyFieldName) { if (array == null) return null; Map<Object, Object> map = createMap(typeOfMap); int len = Array.getLength(array); if (len > 0) { Object obj = Array.get(array, 0); // CE<?> ce = CE.of(obj.getClass()); for (int i = 0; i < len; i++) { obj = Array.get(array, i); Object key = LE.getPropertyValue(obj, keyFieldName); map.put(key, obj); } } return map; }