如何高效地處理List數據對比及數據填充?

如何高效地處理List數據對比及數據填充?

高效處理List

數據對比與填充

本文探討如何高效處理來自不同來源的兩組List

數據,并基于明細數據完善表頭數據。 具體問題:程序需處理兩組外部數據——表頭數據和明細數據。表頭數據需根據明細數據補充,但同一表頭可能對應多個不同倉庫ID的明細數據,因此需將表頭數據拆分成多條記錄,每條記錄對應一個倉庫ID。現有代碼使用兩個List

存儲表頭和明細數據,并通過headId關聯,效率低下,需尋求更優方案。

核心在于高效組織和訪問明細數據。 解決方案:利用HashMap進行數據分組。 核心思想:先按倉庫ID分組明細數據,再針對每個倉庫ID處理對應明細數據,避免重復遍歷和查找。

具體實現:創建HashMap,鍵為倉庫ID(String類型),值為該倉庫ID對應的明細數據列表(List)。

// 鍵為倉庫ID,值為該倉庫的明細列表 Map<String, List<Object>> warehouses = new HashMap<>();

遍歷明細數據,根據每個明細數據中的倉庫ID,將其添加到對應的列表中。computeIfAbsent方法確保倉庫ID不存在時,創建一個新列表。

List<Object> details = readDetails(); for (Object detail : details) {   String warehouseId = getWarehouseId(detail);  // 從明細數據中提取倉庫ID   warehouses.computeIfAbsent(warehouseId, k -> new ArrayList<>()).add(detail); }

如此,所有明細數據被高效地組織到不同的倉庫ID分組中。后續處理表頭數據時,可直接根據表頭中的headId和倉庫ID,快速從warehouses中獲取對應明細數據,實現高效數據填充。 這比在兩個List

之間循環查找高效得多,避免大量重復比較和查找。 分組完成后,即可針對不同倉庫ID處理對應明細數據,完成表頭數據的填充。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享