java数组列表按照同一属性进行分组

  

<强> java数组列表按照同一属性进行分组

  

<强>前言:

  

通常使用SQL查询一批数据的时候,可以利用中SQL的GROUP BY语句对数据进行分组,但是有时候出于对性能的考虑,不会使用组,而是先把数据捞出来后,使用代码,在内存中按照某个属性进行分组。

  

代码         公开课SkuVo {      私人长skuId;   私人字符串productName;   私人长brandStoreSn;      公共SkuVo(长skuId字符串productName,长brandStoreSn) {   超级();   这一点。skuId=skuId;   这一点。productName=productName;   这一点。brandStoreSn=brandStoreSn;   }      公共长getSkuId () {   返回skuId;   }   公共空间setSkuId(长skuId) {   这一点。skuId=skuId;   }   公共字符串getProductName () {   返回productName;   }   公共空间setProductName(字符串productName) {   这一点。productName=productName;   }   公共长getBrandStoreSn () {   返回brandStoreSn;   }   公共空间setBrandStoreSn(长brandStoreSn) {   这一点。brandStoreSn=brandStoreSn;   }      @Override   公共字符串toString () {   返回“SkuVo skuId=" + skuId +”, productName=" + productName + ", brandStoreSn=" + brandStoreSn + "]”;   }   }      之前      

假设从数据查询出一批数据,存在了里面了。使用一个算法按照对进行分组,skuId相同的归为一组。

  

<>强分组算法

        公开课TestArrayListGroupByKey {      公共静态void main (String [] args) {/* 1,准备数据* */SkuVo sku1=new SkuVo (1 l,“p1”, 100 l);   SkuVo sku2=new SkuVo (2 l、“p2”、101 l);   SkuVo sku3=new SkuVo (3 l, p3, 102 l);   SkuVo sku4=new SkuVo (3 l,“p4”, 103 l);   SkuVo sku5=new SkuVo (2 l,“p5 100 l);   SkuVo sku6=new SkuVo (5 l,“p6 100 l);      ListskuVoList=数组。asList(新SkuVo [] {sku1、sku2 sku3, sku4, sku5, sku6});/* 2,分组算法* */Map<长,ListtempList=skuIdMap.get (skuVo.getSkuId ());/*如果取不到数据,那么直接新一个空的ArrayList * */如果(tempList==null) {   ,tempList=new ArrayList<的在();   tempList.add (skuVo);   skuIdMap.put (skuVo.getSkuId (), tempList);   }   其他{/*某个sku之前已经存放过了,则直接追加数据到原来的列表里* */tempList.add (skuVo);   }   }/* 3,遍历地图,验证结果* */(长skuId: skuIdMap.keySet ()) {   System.out.println (skuIdMap.get (skuId));   }   }   }      之前      

结果如下

        [SkuVo [skuId=1, productName=p1, brandStoreSn=100]]   [SkuVo [skuId=2, productName=p2, brandStoreSn=101], SkuVo [skuId=2, productName=p5 brandStoreSn=100]]   [SkuVo [skuId=3、productName=p3, brandStoreSn=102], SkuVo [skuId=3, productName=p4, brandStoreSn=103]]   [SkuVo [skuId=5, productName=p6 brandStoreSn=100]]      

从输出结果看,数据已经按照skuId进行分组了。

  

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java数组列表按照同一属性进行分组