[英]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.