最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java ArrayList按照同一屬性進行分組

 更新時間:2017年02月17日 14:34:18   投稿:lqh  
這篇文章主要介紹了java ArrayList按照同一屬性進行分組的相關資料,需要的朋友可以參考下

java ArrayList按照同一屬性進行分組

前言:

通常使用SQL查詢一批數(shù)據(jù)的時候,可以利用SQL中的GROUP BY語句對數(shù)據(jù)進行分組,但是有時候出于對性能的考慮,不會使用GROUP BY,而是先把數(shù)據(jù)撈出來后,使用代碼,在內存中按照某個屬性進行分組。

代碼

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

假設從數(shù)據(jù)查詢出一批數(shù)據(jù),存在了List<SkuVo> 里面了。使用一個算法按照skuIdList<SkuVo>進行分組,skuId相同的歸為一組.

分組算法

public class TestArrayListGroupByKey {

  public static void main(String[] args) {
    /*1、準備數(shù)據(jù)**/
    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());
      /*如果取不到數(shù)據(jù),那么直接new一個空的ArrayList**/
      if (tempList == null) {
        tempList = new ArrayList<>();
        tempList.add(skuVo);
        skuIdMap.put(skuVo.getSkuId(), tempList);
      }
      else {
        /*某個sku之前已經存放過了,則直接追加數(shù)據(jù)到原來的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]]

從輸出結果看,數(shù)據(jù)已經按照skuId進行分組了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Java實現(xiàn)基于TCP的通訊程序實例解析

    Java實現(xiàn)基于TCP的通訊程序實例解析

    這篇文章主要介紹了Java實現(xiàn)基于TCP的通訊程序實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • java為什么需要虛擬機jvm原理詳解

    java為什么需要虛擬機jvm原理詳解

    這篇文章主要為大家介紹了java為什么需要虛擬機jvm的原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-11-11
  • 深入理解Java編程線程池的實現(xiàn)原理

    深入理解Java編程線程池的實現(xiàn)原理

    這篇文章主要介紹了深入理解Java編程線程池的實現(xiàn)原理,涉及ThreadPoolExecutor類,線程池實現(xiàn)原理及示例等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot請求處理之常用參數(shù)注解介紹與源碼分析

    SpringBoot請求處理之常用參數(shù)注解介紹與源碼分析

    SpringBoot是一種整合Spring技術棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學習請求處理、常用注解和方法參數(shù)的小技巧
    2022-10-10
  • 在Java中使用Moshi?JSON庫的方法詳解

    在Java中使用Moshi?JSON庫的方法詳解

    Moshi?是一個可用于?Java?與?Kotlin?的?JSON?序列化與反序列化庫,其主要使用?Kotlin?編寫,本文以樣例代碼的方式來演示該庫在?Java?中的使用,需要的朋友可以參考下
    2024-04-04
  • 模擬Ping操作的一個Java類

    模擬Ping操作的一個Java類

    這篇文章主要為大家詳細介紹了一個模擬Ping操作的Java類,感興趣的小伙伴們可以參考一下
    2016-03-03
  • mybatis?log4j2打印sql+日志實例代碼

    mybatis?log4j2打印sql+日志實例代碼

    在學習mybatis的時候,如果用log4j2來協(xié)助查看調試信息,則會大大提高學習的效率,加快debug速度,下面這篇文章主要給大家介紹了關于mybatis?log4j2打印sql+日志的相關資料,需要的朋友可以參考下
    2022-08-08
  • mybatis 一對多嵌套查詢的實現(xiàn)

    mybatis 一對多嵌套查詢的實現(xiàn)

    本文主要介紹了mybatis 一對多嵌套查詢的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • ssm 使用token校驗登錄的實現(xiàn)

    ssm 使用token校驗登錄的實現(xiàn)

    這篇文章主要介紹了ssm 使用token校驗登錄的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 基于jdbc處理Clob的使用介紹

    基于jdbc處理Clob的使用介紹

    本篇文章是對jdbc處理Clob的使用進行了分析介紹,需要的朋友參考下
    2013-05-05

最新評論

丰宁| 云阳县| 丰都县| 宁乡县| 岱山县| 临安市| 光泽县| 大冶市| 普兰县| 邻水| 沐川县| 东方市| 云浮市| 寻甸| 襄汾县| 塔城市| 沐川县| 洪泽县| 兴海县| 连州市| 诸城市| 达拉特旗| 政和县| 临城县| 开原市| 南溪县| 苏州市| 盈江县| 濉溪县| 新建县| 宾阳县| 龙口市| 会东县| 突泉县| 桑植县| 辽宁省| 蒲江县| 开鲁县| 德化县| 长岛县| 东源县|