在Java中比较2 ArrayList

时间:2018-10-28 17:53:04

标签: java arraylist compare

我有2个ArrayList

列表fileArray = new ArrayList();     列表文件Txt = new ArrayList();

List<String> newDoc = new ArrayList<String>();        

while((fileName = fileRead.readLine()) !=null){
    fileArray.add(fileName);
}
fileRead.close();

while((txtName = txtRead.readLine()) !=null){
    fileTxt.add(txtName);
}
txtRead.close();

我想将fileArray数据与fileTxt数据进行比较,但不知道该怎么做,因为要进行比较,我需要首先获取数据。为此,我需要循环数组并使用.get之类的

for(int a=0;a<fileTxt.size();a++){
    System.out.println(fileTxt.get(a));
}

我知道这是错误的,但是任何人都可以帮助我。

注意:我想使用诸如contains方法之类的方法,但是不能,因为数据是500万行。 (不等于方法)

已更新:我想在fileTxt中找到一个出现在fileArray中的单词。 (所以基本上它的类似包含)

3 个答案:

答案 0 :(得分:0)

要比较两个数组列表中的两个值,请执行以下操作:

if(fileArray.get(index).equals(fileTxt.get(index)))

答案 1 :(得分:0)

有一个windefull功能。

System.out.println(array1.equals(array2)); 

然后,您可能需要手动检查答案:

    ArrayList like1 = new ArrayList();
    ArrayList like2 = new ArrayList(); 
    ...

    boolean flag = true;
    if (!Math.min(like1.size(), like2.size()) == Math.max(like1.size(), like2.size())) 
    {
        flag = false;
    }
    for (int i = 0; i < Math.min(like1.size(), like2.size()); i++) {
        if (!like1.get(i).equals(like2.get(i))) {
            flag = false;
            break;
        }
    }

答案 2 :(得分:-2)

您可以使用removeAll()方法执行此操作。

fileArray.removeAll(fileTxt);
fileTxt.removeAll(fileArray);

如果其中一个仍然有数据,则意味着两个List的位置不同。

但是我不建议您在Java列表中存储500万个数据。也许您应该考虑其他事情。