欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java多線程批量處理百萬級的數(shù)據(jù)方法示例

 更新時間:2025年02月15日 09:30:14   作者:弗拉唐  
這篇文章主要介紹了java多線程批量處理百萬級的數(shù)據(jù)的相關資料,文中通過代碼介紹的非常詳細,對大家學習或者使用java多線程具有一定的參考借鑒價值,需要的朋友可以參考下

一,對Excel表中兩個表數(shù)據(jù)的讀取

創(chuàng)建readSheet方法,參數(shù)為所需讀取Excel表的路徑和索引,這個索引就是在文件中兩個表的索引(分別為0和1)

方法步驟:

1.使用字節(jié)流讀取Excel表,通過getSheetAt(0)方法獲取第一個表格,也就是負責人表

2.接著通過getRow()方法獲取第一行的數(shù)據(jù),也就是表頭

3.通過for循環(huán)遍歷第一行到最后一行的數(shù)據(jù),這時候需要一個list集合來接收數(shù)據(jù)

4.創(chuàng)建一個泛型為Map<String ,String>的List集合接收上面的map數(shù)據(jù)

5.遍歷得到每一行的每一個單元格,也就是每一個值

5.1:headerRow.getCell(cell.getColumnIndex()).getStringCellValue():從表頭行(第0行)獲取當前單元格對應的列名

5.2: String cellValue = getCellValue(cell);獲取單元格的值

5.3:rowMap.put(columnName,cellValue)添加數(shù)據(jù)到map集合

6.最后把map集合添加到list集合

兩個表格,索引對應0和1

二:拆分集合

因為業(yè)主信息太多,所以需要進行拆分

步驟:

1.方法中的chunkSize為所拆分的大小,也就是多少條數(shù)據(jù)為一部分,本條案例用的是1000條數(shù)據(jù)為一塊

2.使用了subList()方法將i從0到改模塊大小1000條數(shù)據(jù)添加到parts列表里面(使用Math.min()方法比較整個表的大小和模塊的大小,選擇更小的,防止報錯)

三:多線程驗證拆分的數(shù)據(jù),驗證數(shù)據(jù)的項目、樓棟、單元是否存在在第一個集合,這里使用了線程池,最后合并結果

步驟:

1.先使用Executors.newFixedThreadPool 創(chuàng)建一個固定大小的線程池。這里只指明了一個核心線程數(shù)量的參數(shù)Runtime.getRuntime().availableProcessors()

2.遍歷步驟二中拆分到的每一個數(shù)據(jù)模塊,每一個模塊都使用submit()方法提交一個任務給線程池

3.遍歷每一個模塊中的每一行數(shù)據(jù)row,調用自己創(chuàng)建的existsInFirstSheet()方法來檢查數(shù)據(jù)row是否在負責人(firstSheetData)表格中存在

4.創(chuàng)建一個list列表validData,如果存在就添加到列表中,返回validData

5.創(chuàng)建一個列表futures,將每一個模塊的validData數(shù)據(jù)添加到列表中,最后返回futures

6.existsInFirstSheet()方法:

檢查row是否在負責人(firstSheetData)表格中存在

步驟:

1.遍歷 firstSheetData 列表中的每一行數(shù)據(jù)。

2.檢查當前行的 "項目"、"樓棟" 和 "單元" 字段是否與 row 的對應字段相等。

3.如果相等,則將 firstSheetRow 中的 "負責人" 字段值賦給 row,并返回 true。

4.如果遍歷完所有行都沒有找到匹配項,則返回 false

四:將存在的業(yè)主信息結果輸出到一個新的Excel中,以負責人名稱為工作表名稱,將對應的業(yè)主數(shù)據(jù)分離到不同的工作表

步驟:

1.先對futures列表進行遍歷,然后創(chuàng)建一個mergedData列表,把所有的數(shù)據(jù)都添加到這個列表中

2.將合并的結果validatedData重新寫入另一個Excel表格

步驟:

2.1:遍歷合并結果每一行,獲取負責人名稱,并進行判斷是否為null,如果不為null再添加到

新創(chuàng)建的Set集合responsiablePersons中

2.2:遍歷負責人集合,每個負責人創(chuàng)建一個表格,同時也需要判斷是否為null

2.3:創(chuàng)建的表格以負責人的名字進行命名

2.4:初始化索引為0,遍歷Set集合中所有的鍵,得到表頭數(shù)據(jù)

2.5:再對合并的結果進行遍歷,判斷負責人與person值是否相同,相同就遍歷所有鍵值對,最后寫進Excel表格中

總結 

到此這篇關于java多線程批量處理百萬級的數(shù)據(jù)的文章就介紹到這了,更多相關java批量處理百萬級數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中String、StringBuffer、StringBuilder的區(qū)別介紹

    Java中String、StringBuffer、StringBuilder的區(qū)別介紹

    這篇文章主要介紹了Java中String、StringBuffer、StringBuilder的區(qū)別介紹,本文講解了可變與不可變、是否多線程安全、gBuilder與StringBuffer共同點等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • 基于HTTP協(xié)議實現(xiàn)簡單RPC框架的方法詳解

    基于HTTP協(xié)議實現(xiàn)簡單RPC框架的方法詳解

    RPC全名(Remote?Procedure?Call),翻譯過來就是遠程過程調用,本文將為大家介紹如何基于HTTP協(xié)議實現(xiàn)簡單RPC框架,感興趣的小伙伴可以了解一下
    2023-06-06
  • 使用Mybatis-Plus時的SqlSessionFactory問題及處理

    使用Mybatis-Plus時的SqlSessionFactory問題及處理

    這篇文章主要介紹了使用Mybatis-Plus時的SqlSessionFactory問題及處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot+Vue中的Token續(xù)簽機制

    SpringBoot+Vue中的Token續(xù)簽機制

    本文主要介紹了SpringBoot+Vue中的Token續(xù)簽機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • 解決Java Calendar類set()方法的陷阱

    解決Java Calendar類set()方法的陷阱

    這篇文章主要介紹了解決Java Calendar類set()方法的陷阱,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Spring中的AutowireCandidateResolver的具體使用詳解

    Spring中的AutowireCandidateResolver的具體使用詳解

    這篇文章主要介紹了Spring中的AutowireCandidateResolver的具體使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Java多線程事務回滾@Transactional失效處理方案

    Java多線程事務回滾@Transactional失效處理方案

    這篇文章主要介紹了Java多線程事務回滾@Transactional失效處理方案,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源

    Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源

    持久層是JavaEE中訪問數(shù)據(jù)庫的核心操作,SpringBoot中對常見的持久層框架都提供了自動化配置,例如JdbcTemplate、JPA 等,MyBatis 的自動化配置則是MyBatis官方提供的。接下來分別向讀者介紹Spring Boot整合這持久層技術中的整合JdbcTemplate
    2022-08-08
  • 詳解java 中泛型中的類型擦除和橋方法

    詳解java 中泛型中的類型擦除和橋方法

    這篇文章主要介紹了詳解java 中泛型中的類型擦除和橋方法的相關資料,需要的朋友可以參考下
    2017-06-06
  • spring boot(四)之thymeleaf使用詳解

    spring boot(四)之thymeleaf使用詳解

    Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP 。接下來通過本文給大家介紹spring boot(四)之thymeleaf使用詳解,需要的朋友可以參考下
    2017-05-05

最新評論