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