工具类系列---【List<Object>分组工具类】


使用场景:

把一个数组,按照某一属性分组,例如,学生数组按照age年龄分组,相同年龄的站到一起。

代码如下:

package com.byjk.finance.common;

import cn.hutool.core.collection.CollUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

/**
 * 分组工具类
 *
 * @author hjw
 * @since 2021年12月06日 10:46:00
 */
public class GroupUtil {

    public static  Map> groupData(List list, Function function) {

        Map> resultMap = new HashMap<>();
        if (CollUtil.isNotEmpty(list)) {
            for (T data : list) {
                resultMap.computeIfAbsent(function.apply(data), k -> new ArrayList<>()).add(data);
            }
        }
        return resultMap;
    }
}

使用方法

把 fieldList数组,按照taxId分组,相同taxId的BusinessField放到一个List中。

Map> taxIdMap = GroupUtil.groupData(fieldList, BusinessField::getTaxId);

相关