java - 方法包含不起作用

标签 java opencsv

我正在尝试检查另一个 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/

相关文章:

使用 OpenCsv SerDe 创建 Hive 表

java - 无法从 IntelliJ 插件运行程序 "adb"

mysql - 这个数据库转储设计好吗?

java - Google map APIv2 应用程序无法正常工作,不断崩溃

java - 当我们可以用 setter 做同样的事情时,为什么我们需要使用构建器设计模式?

java - OpenCSV memberFieldsToBindTo 不工作 - Java

java - 如何在Java中执行2个包含相同条件的While循环?

java - 如何验证 javax.mail.* 中使用的 TLS 版本;

java - 解密 DES/CBC/ZeroBytePadding 数据