1 /**
2 * 按给定对象属性为参数ls分组整理
3 * @param ls 集合
4 * @param propertyName 对象中的某个属性
5 * @return HashMap(key=propertyValue,Value=ArrayList)
6 * @throws IllegalAccessException
7 * @throws InvocationTargetException
8 * @throws NoSuchMethodException
9 */
10 @SuppressWarnings("unchecked")
11 public static <T,E> HashMap<T,List<E>> groupByProperty(List<E> ls,String propertyName) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
12 HashMap<T,List<E>> result=new HashMap<T,List<E>>();
13 List<E> list=null;
14 for (Iterator<E> iter = ls.iterator(); iter.hasNext();) {
15 E element = iter.next();
16 T proValue=(T)PropertyUtils.getProperty(element, propertyName);
17 if(proValue==null)
18 throw new NullPointerException("propertyValue is null");
19 if(result.containsKey(proValue)){
20 list=(List<E>) result.get(proValue);
21 }else{
22 list=new ArrayList<E>();
23 result.put(proValue, list);
24 }
25 list.add(element);
26 }
27 return result;
28 }
1 /**
2 * 提取集合中的对象的属性,组合成List.
3 *
4 * @param collection 来源集合.
5 * @param propertyName 要提取的属性名.
6 */
7 @SuppressWarnings({ "unchecked", "rawtypes" })
8 public static List fetchElementPropertyToList(final Collection collection, final String propertyName) throws Exception {
10 List list = new ArrayList();
11 for (Object obj : collection) {
12 list.add(PropertyUtils.getProperty(obj, propertyName));
13 }
14
15 return list;
16 }