我正在尝试检查另一个 csv 文件中是否存在 csv 文件的行。我的代码如下:
public void readIncassiOLG(String filename,List<String []> itemsToCheck){
CSVReader reader = new CSVReader(new FileReader(filename),CSV_SEPARATOR);
List<String []> body = reader.readAll();
for(String[] item : itemsToCheck){
if(body.contains(item)){
System.out.println("Item present");
}
else{
System.out.println("Item not present");
}
}
}
要检查的项目 (itemsToCheck) 是从第一个文件中筛选出的行,我检查了两个文件中都有一些行,但以下方法总是打印“项目不存在”。
对此有什么建议吗?
最佳答案
如果此列表至少包含一个元素 e 且满足 (o==null ? e==null : o.equals(e))
,则 List 的 contains 方法返回 true。
在你的例子中,它将比较 2 个字符串数组。
但是,array1.equals(array2)
与 array1 == array2
相同。
这意味着它将检查它是否是同一个数组。 要比较数组的内容,您需要类似以下内容:
Arrays.equals(array1, array2)
因此,列表的 contains 方法不适合您的使用(即比较数组内容),而是 java.util.Arrays 的 equals 方法或类似方法。
关于java - 方法包含不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303828/