我有两个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文件时,如何跨行而不是在列中写入?
我没有在任何链接的帖子中看到我的问题的解决方案...
答案 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);