工具类系列---【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 staticMap > 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);