<强> 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<长,List tempList=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数组列表按照同一属性进行分组