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

直接看代码,就会明白。

//最后结果,发现集合大小由4变成3。集合根据特定条件被成功分组
    /**
     * 

Title:main

*

Description:

* @author 鲁东顺 * @date 2017-8-17下午6:23:31 */
public static void main(String[] args) throws Exception{ List billingList = new ArrayList(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd"); Article4temp a1 = new Article4temp(); a1.setId(1); a1.setSign("GLOBAL_1_MOTHER"); a1.setDate(sdf.parse("2015/01/01")); billingList.add(a1); Article4temp a2 = new Article4temp(); a2.setId(2); a2.setSign("GLOBAL_1_MOTHER"); a2.setDate(sdf.parse("2015/02/01")); billingList.add(a2); Article4temp a3 = new Article4temp(); a3.setId(3); a3.setSign("GLOBAL_1_MOTHER"); a3.setDate(sdf.parse("2015/01/01")); billingList.add(a3); Article4temp a4 = new Article4temp(); a4.setId(4); a4.setSign("GLOBAL_1_MOTHER"); a4.setDate(sdf.parse("2016/01/01")); billingList.add(a4); groupBillingDataByExcpBatchCode(billingList); } /** *

Title:groupBillingDataByExcpBatchCode

*

Description:

* @author 鲁东顺 * @date 2017-8-17下午6:23:24 */
private static Map> groupBillingDataByExcpBatchCode(List billingList) throws Exception{ Map> resultMap = new HashMap>(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd"); try{ System.out.println(billingList.size()); for(Article4temp tmExcpNew : billingList){ String key = sdf.format(tmExcpNew.getDate()); if(resultMap.containsKey(key)){//map中已存在,将该数据存放到同一个key的map中 resultMap.get(key).add(tmExcpNew); }else{//map中不存在,新建key,用来存放数据 List tmpList = new ArrayList(); tmpList.add(tmExcpNew); resultMap.put(key, tmpList); } } System.out.println(resultMap.size()); }catch(Exception e){ e.printStackTrace(); } return resultMap; }

你可能感兴趣的:(java)