首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中2种ArrayList的比较

Java中2种ArrayList的比较
EN

Stack Overflow用户
提问于 2018-10-29 01:53:04
回答 3查看 116关注 0票数 0

我有2个ArrayList

List fileArray =新ArrayList();List fileTxt =新ArrayList();

代码语言:javascript
复制
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,如下所示

代码语言:javascript
复制
for(int a=0;a<fileTxt.size();a++){
    System.out.println(fileTxt.get(a));
}

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2018-10-29 02:01:18

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

代码语言:javascript
复制
if(fileArray.get(index).equals(fileTxt.get(index)))
票数 0
EN

Stack Overflow用户

发布于 2018-10-29 02:43:22

有一个奇妙的功能。

代码语言:javascript
复制
System.out.println(array1.equals(array2)); 

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

代码语言:javascript
复制
    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;
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2018-10-29 02:02:29

您可以使用removeAll()方法来完成此操作。

代码语言:javascript
复制
fileArray.removeAll(fileTxt);
fileTxt.removeAll(fileArray);

如果他们中的一个仍然有数据,这意味着两个列表是不同的。

但是,我不会建议您在Java列表中存储500万数据。也许你应该想点别的。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53034498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档