如何验证(比较相同)两个arraylists并输出CSV文件作为结果JAVA

时间:2017-08-14 18:22:53

标签: java sql csv filewriter

我有两个arraylists(可以使用其他集合)并且需要输出一个csv文件来确定这些arraylists的内容是否相同;逐个细胞比较。 arraylists取自结果集并进行排序。它们看起来像这样:

sourceData =(9,Orlando,268年2月28日,Lloydtown,12月1日等)

targetData =(9,Caledon,Jan 19,38,South Hark,Dec 1等)

我尝试的是获取第一个arraylist的第一个值,第二个arraylist的第一个值,然后比较它们并将其打印到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文件时,如何跨行而不是在列中写入?

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

1 个答案:

答案 0 :(得分:0)

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);