English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java ArrayList nach gleicher Eigenschaft gruppieren
Einführung:
Normalerweise kann man, wenn man eine Menge von Daten mit SQL abfragt, die GROUP BY-Anweisung von SQL verwenden, um die Daten zu gruppieren. Manchmal, aus Gründen der Leistung, wird jedoch nicht GROUP BY verwendet, sondern die Daten werden zuerst extrahiert und in der Erinnerung nach einem bestimmten Attribut gruppiert.
Code
public class SkuVo { private Long skuId; private String productName; private Long brandStoreSn; public SkuVo(Long skuId, String productName, Long brandStoreSn) { super(); this.skuId = skuId; this.productName = productName; this.brandStoreSn = brandStoreSn; } public Long getSkuId() { return skuId; } public void setSkuId(Long skuId) { this.skuId = skuId; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public Long getBrandStoreSn() { return brandStoreSn; } public void setBrandStoreSn(Long brandStoreSn) { this.brandStoreSn = brandStoreSn; } @Override public String toString() { return "SkuVo [skuId=" + skuId + ", productName=" + productName + ", brandStoreSn=" + brandStoreSn + "]"; } }
Angenommen, dass eine Menge von Daten aus der Datenabfrage extrahiert wird und in einer List<SkuVo> gespeichert ist. Verwenden Sie einen Algorithmus, um die List<SkuVo> nach skuId zu gruppieren, und diejenigen mit gleichem skuId werden zu einer Gruppe zusammengefasst.
Gruppierungsalgorithmus
public class TestArrayListGroupByKey { public static void main(String[] args) {}} /*1, Daten vorbereiten**/ SkuVo sku1 = new SkuVo(1L,"p1"100L); SkuVo sku2 = new SkuVo(2L,"p2"101L); SkuVo sku3 = new SkuVo(3L,"p3"102L); SkuVo sku4 = new SkuVo(3L,"p4"103L); SkuVo sku5 = new SkuVo(2L,"p5"100L); SkuVo sku6 = new SkuVo(5L,"p6"100L); List<SkuVo> skuVoList = Arrays.asList(new SkuVo [] {sku1,sku2,sku3,sku4,sku5,sku6}); /*2, Gruppierungsalgorithmus**/ Map<Long, List<SkuVo>> skuIdMap = new HashMap<>(); for (SkuVo skuVo : skuVoList) { List<SkuVo> tempList = skuIdMap.get(skuVo.getSkuId()); /*Wenn die Daten nicht abgerufen werden können, erstellen Sie eine leere ArrayList**/ if (tempList == null) { tempList = new ArrayList<>(); tempList.add(skuVo); skuIdMap.put(skuVo.getSkuId(), tempList); } else { /*Wenn eine bestimmte sku bereits gespeichert wurde, fügen Sie die Daten direkt in die ursprüngliche Liste hinzu**/ tempList.add(skuVo); } } /*3, durchsuchen Sie das Map, um das Ergebnis zu überprüfen**/ for(Long skuId : skuIdMap.keySet()){ System.out.println(skuIdMap.get(skuId)); } } }
Ergebnis wie folgt
[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]]
Aus den Ausgabenergebnissen zu urteilen, die Daten sind bereits nach skuId gruppiert.
Vielen Dank für das Lesen, ich hoffe, es kann Ihnen helfen, danke für die Unterstützung dieser Website!