簡體   English   中英

想要比較兩個記錄列表,將commons保存到一個新列表,記錄在1M左右,需要很多時間來處理

[英]Want to compare two Lists of records, save commons to a new list ,Records are around 1M and taking a lot of time to process

我正在處理 2 個 csv 文件並檢查常見條目並將它們保存到一個新的 csv 文件中。但是比較需要很多時間。我的方法是首先將文件中的所有數據讀入 ArrayList,然后在主列表上使用 parallelStream,我對另一個列表進行比較,並使用字符串生成器附加常見條目,然后將其保存到新的 csv 文件中。 下面是我的代碼。

allReconFileLines.parallelStream().forEach(baseLine -> {

            String[] baseLineSplitted = baseLine.split(",|,,");
            if (baseLineSplitted != null && baseLineSplitted.length >= 13 && baseLineSplitted[13].trim().equalsIgnoreCase("#N/A")) {
                for (int i = 0; i < allCompleteFileLines.size(); i++) {
                    String complteFileLine = allCompleteFileLines.get(i);
                    String[] reconLineSplitted = complteFileLine.split(",|,,");
                    if (reconLineSplitted != null && reconLineSplitted[3].replaceAll("^\"|\"$", "").trim().equals(baseLineSplitted[3].replaceAll("^\"|\"$", "").trim())) {
                        //pw.write(complteFileLine);
                        matchedLines.append(complteFileLine);
                       
                        break;
                    }
                }
            }
        });
   pw.write(matchedLines.toString());

目前,處理需要幾個小時。 我怎樣才能讓它快?

將一個文件的鍵讀入例如HashSet ,然后在讀取第二個文件時,檢查每一行是否在集合中,如果是,則將其寫出。 這樣你只需要足夠的內存來保存一個文件的密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM