想要比较两个记录列表,将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
,然后当您读取第二个文件时,对于每一行检查它是否在集合中,如果是则写出来。这样你只需要足够的内存来保存一个文件的密钥。
我正在处理 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
,然后当您读取第二个文件时,对于每一行检查它是否在集合中,如果是则写出来。这样你只需要足够的内存来保存一个文件的密钥。