最近工作中在弄订单时候需要对商品列表进行分组.为通用性写了个工具类
/**
*
* @param <T> List中实体类类型
* @param <I> List中实体类中参数类型
*/
public class MyUtil<T,I> {
/**
* 将一个数组根据实体类中的某一个参数进行分组
* @param list 需要分组的列表
* @param map 组合后的map
* @param methodName 获取mapKey的方法名
* @throws Exception
*/
public void makeOrderGroup(List<T> list, Map<I, List<T>> map, String methodName ) throws Exception {//map是用来接收分好的组的
if (null == list || null == map) {
return;
}
I key;
List<T> list1;
for (T val : list) {
Method method = val.getClass().getMethod(methodName);
key = (I)method.invoke(val);//按这个属性分组,map的Key
list1 = map.get(key);
if (null == list1) {
list1 = new ArrayList<>();
map.put(key, list1);
}
list1.add(val);
}
}
}
目前使用没什么问题.请大佬们看看有没有改进的地方