java ArrayList는 동일한 속성으로 그룹화

java ArrayList는 동일한 속성으로 그룹화
선언:
일반적으로 SQL을 사용하여 한 무리의 데이터를 조회할 때 SQL의 GROUP BY 문구를 이용하여 데이터를 그룹화할 수 있지만, 때로는 성능에 대한 고려 때문에 GROUP BY를 사용하지 않고 데이터를 먼저 건져낸 후에 코드를 사용하여 메모리에서 특정한 속성에 따라 그룹화할 수 있다.
코드

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 + "]";
  }
}

데이터에서 한 무더기의 데이터를 조회해 낸다면 List 에 존재합니다.하나의 알고리즘을 사용하여 skuId에 따라 List를 그룹화하고 skuId는 같은 그룹으로 분류합니다.
그룹 알고리즘

public class TestArrayListGroupByKey {

  public static void main(String[] args) {
    /*1、 **/
    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、 **/
    Map<Long, List<SkuVo>> skuIdMap = new HashMap<>();
    for (SkuVo skuVo : skuVoList) {
      List<SkuVo> tempList = skuIdMap.get(skuVo.getSkuId());
      /* , new ArrayList**/
      if (tempList == null) {
        tempList = new ArrayList<>();
        tempList.add(skuVo);
        skuIdMap.put(skuVo.getSkuId(), tempList);
      }
      else {
        /* sku , List **/
        tempList.add(skuVo);
      }
    }

    /*3、 map, **/
    for(Long 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에 따라 그룹화되었다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기