将List中的实体按照某个字段进行分组的算法

2018-03-12 16:46:23

使用语言:JAVA


如何将List中存放的实体按照某个字段进行分组呢?来看看下面的例子,假如实体中有个字段叫批次号,我们将具有相同批次号的实体放在一起,那么怎么实现呢?看下面的代码:


可以定义个Map,Map的key用于存放异常批次号,value存放实体集合List<TmExcpNewVo>。循环要排序的List



[java] view plain copy

  1. /** 

  2.  * 按照异常批次号对已开单数据进行分组 

  3.  * @param billingList 

  4.  * @return 

  5.  * @throws Exception 

  6.  */  

  7. private Map<String, List<TmExcpNewVo>> groupBillingDataByExcpBatchCode(List<TmExcpNewVo> billingList) throws Exception{  

  8.     Map<String, List<TmExcpNewVo>> resultMap = new HashMap<String, List<TmExcpNewVo>>();  

  9.       

  10.     try{  

  11.         for(TmExcpNewVo tmExcpNew : billingList){  

  12.               

  13.             if(resultMap.containsKey(tmExcpNew.getExcpbatch())){//map中异常批次已存在,将该数据存放到同一个key(key存放的是异常批次)的map中  

  14.                 resultMap.get(tmExcpNew.getExcpbatch()).add(tmExcpNew);  

  15.             }else{//map中不存在,新建key,用来存放数据  

  16.                 List<TmExcpNewVo> tmpList = new ArrayList<TmExcpNewVo>();  

  17.                 tmpList.add(tmExcpNew);  

  18.                 resultMap.put(tmExcpNew.getExcpbatch(), tmpList);  

  19.                   

  20.             }  

  21.   

  22.         }  

  23.           

  24.     }catch(Exception e){  

  25.         throw new Exception("按照异常批次号对已开单数据进行分组时出现异常", e);  

  26.     }  

  27.       

  28.     return resultMap;  

  29. }  


  • 2019-02-28 16:46:26

    android获取视频、图片时添加防盗链

    使用HTTP协议时,可以利用头信息中的Referer做防盗链。 我们在一些网站的网页里访问图片的时候,在图片本站是可以正常看到的,但在外头就不能看到了,这是因为在http的header信息中的referer元素。

  • 2019-03-02 11:29:17

    MySQL学习之索引顺序

    这个问题比较简单,MySQL本身会对条件和索引进行判断,这样写可以用到索引,没有问题。

  • 2019-03-06 11:24:19

    MySQL查看数据库表容量大小

    本文介绍MySQL查看数据库表容量大小的命令语句,提供完整查询语句及实例,方便大家学习使用。

  • 2019-03-13 09:38:11

    写入MySQL报错超出 max_allowed_packet 的问题

    MySQL会根据配置文件会限制server接受的数据包的大小。如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。