如何将List中存放的实体按照某个字段进行分组呢?来看看下面的例子,假如实体中有个字段叫批次号,咱们将具备相同批次号的实体放在一块儿,那么怎么实现呢?看下面的代码:java
能够定义个Map,Map的key用于存放异常批次号,value存放实体集合List<TmExcpNewVo>。循环要排序的Listapp
[java] view plain copyspa
- /**
- * 按照异常批次号对已开单数据进行分组
- * @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;
- }