如何将List中存放的实体按照某个字段进行分组呢?来看看下面的例子,假如实体中有个字段叫批次号,我们将具有相同批次号的实体放在一起,那么怎么实现呢?看下面的代码:
可以定义个Map,Map的key用于存放异常批次号,value存放实体集合List。循环要排序的List
/**
* 对list进行分组
* @param billingList
* @return
* @throws Exception
*/
private Map> groupBillingDataByExcpBatchCode(List billingList) throws Exception{
Map> resultMap = new HashMap>();
try{
for(LogSys tmExcpNew : billingList){
if(resultMap.containsKey(tmExcpNew.getRecordCount())){//map中异常批次已存在,将该数据存放到同一个key(key存放的是异常批次)的map中
resultMap.get(tmExcpNew.getRecordCount()).add(tmExcpNew);
}else{//map中不存在,新建key,用来存放数据
List tmpList = new ArrayList();
tmpList.add(tmExcpNew);
resultMap.put(tmExcpNew.getRecordCount(), tmpList);
}
}
}catch(Exception e){
e.printStackTrace();
}
return resultMap;
}