想要比较两个记录列表,将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 文件中。但是比较需要很多 time.My 方法是首先将文件中的所有数据读入 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());

目前处理需要几个小时。我怎样才能快速完成?

将一个文件的密钥读入例如a HashSet,然后当您读取第二个文件时,对于每一行检查它是否在集合中,如果是则写出来。这样你只需要足够的内存来保存一个文件的密钥。