如何验证(比较相同性)两个数组列表并将 CSV 文件输出为结果 JAVA



我有两个数组列表(可以与其他集合一起使用(,需要输出一个csv文件来确定这些arraylists的内容是否相同;本质上是逐个单元格比较。数组列表取自结果集并进行排序。它们看起来像这样:

源数据 = (9, 奥兰多, 2 月 28, 668, 劳埃德敦, 12 月 1 日, 等等(

targetData = (9, Caledon, 1 月 19, 38, South Hark, Dec 1, etc(

我尝试的是获取第一个数组列表的第一个值,第二个数组列表的第一个值,然后比较它们并将其打印到 CVS 文件中。

for (int i = 0; i <sizeOfData; i++) {
if (sourceData.get(i).equals(targetData.get(i))){
validator = ("True");
} else {
validator = ("False");
}
csvFilePrinter.printRecord(sourceData.get(i), targetData.get(i), validator);
}

输出按预期显示:

9, 9, true

但是,我需要 CSV 文件中的下一行显示:

668, 38, false

因此,总体模式为:

9, 9, true, Orlando, Caledon, false, Feb 28, Jan 19, false
668, 38, false, Lloydtown, South Hark, false, Dec 1, Dec 1, true

一旦我放置标题,并说第二列是"城市",第 2 列中只会显示城市值。

我已经尝试了所有编写方式,但是CSV文件的格式都是错误的,因为每次我使用csvFilePrinter时,它都会写入下一行。如何写入下一列?当我将我想要的一行放入数组中时,我可以完成这项工作,但我的结果集每次都会不同,所以我无法硬编码我需要多少列。在写入 CVS 文件时,如何跨行而不是跨列书写?

我在任何链接的帖子中都没有看到我的问题的解决方案......

csvFilePrinter.printRecord 似乎打印了一条完整的记录。在这种情况下,它应该在循环之外。最好参考,CSVPrinter 它还可以打印 Iterable,因此它可以打印 ArrayList,所需的解决方案可能如下所示。

List<String> requiredOutput = new ArrayList<>();
Strin validator = "False";
for (int i = 0; i <sizeOfData; i++) {
if (sourceData.get(i).equals(targetData.get(i))){
validator = ("True");
} else {
validator = ("False");
}
requiredOutput.add(sourceData.get(i));
requiredOutput.add(targetData.get(i));
requiredOutput.add(validator);
}
csvFilePrinter.printRecord(requiredOutput);

最新更新