/**
* @author znj
*/
public class ListUtils {
/**
* list 集合分组
*
* @param list 待分组集合
* @param groupBy 分组Key算法
* @param 分组Key类型
* @param 行数据类型
* @return 分组后的Map集合
*/
public static Map> groupBy(List list, GroupBy groupBy) {
return groupBy((Collection) list, groupBy);
}
/**
* list 集合分组
*
* @param list 待分组集合
* @param groupBy 分组Key算法
* @param 分组Key类型
* @param 行数据类型
* @return 分组后的Map集合
*/
public static Map> groupBy(Collection list, GroupBy groupBy) {
Map> resultMap = new LinkedHashMap>();
for (V e : list) {
K k = groupBy.groupBy(e);
if (resultMap.containsKey(k)) {
resultMap.get(k).add(e);
} else {
List tmp = new LinkedList();
tmp.add(e);
resultMap.put(k, tmp);
}
}
return resultMap;
}
/**
* List分组
*
* @param 返回分组Key
* @param 分组行
*/
public interface GroupBy {
K groupBy(V row);
}
}