java - 比较两个数组时如何显示另一个数组中缺少的字符串?

标签 java arrays

我正在尝试比较两个数组并显示哪些条目存在,哪些不存在。

例如 - 我的两个数组包含以下内容:

logArray: Test1, Test2, Test3, Test4, Test5
checkArray: Test1, Test2, Test3, Test4, Test5, Test6, Test7

我试图实现的结果是以下输出:

FOUND: Test1
FOUND: Test2
FOUND: Test3
FOUND: Test4
FOUND: Test5
NOT FOUND: Test6
NOT FOUND: Test7

我想我的代码已经很接近了,但是有些地方不对,NOT FOUND 显示的数量太离谱了。

    for (int i = 0; i < logArray.length; i++) {
        for (int x = 0; x < checkArray.length; x++) {
            if (logArray[i].equals(checkArray[x])) {
                logsFound = logsFound + 1;
                modelFound.addElement("<html><font color=#009933>FOUND: </font> " + logArray[x] + "</html>");
            }
        }
        if (isFound == false) {
            logsNotFound = logsNotFound + 1;
            modelNotFound.addElement("<html><font color=#FF0000>NOT FOUND: </font> " + logArray[i] + "</html>");
        }         
    }

编辑: 根据一些评论进行了调整,它现在正确显示 NOT FOUND,但是如果它在第一个数组数量内,它只会显示 NOT FOUND 的数量。因此,因为我的 logsArray 包含 9 个项目,但 checkArray 包含 10 个项目(如 list 下所示),它在 NOT FOUND 中显示总共 4 个。所以它也意味着显示 2VA.004.01.16。

isFound 在 for 循环之前声明

Picture

更新代码:

    for (int i = 0; i < logArray.length; i++) {
        isFound = false;
        for (int x = 0; x < checkArray.length; x++) {
            if (logArray[i].equals(checkArray[x])) {
                logsFound = logsFound + 1;
                modelFound.addElement("<html><font color=#009933>FOUND: </font> " + logArray[x] + "</html>");
                isFound = true;
            }
        }
        if (isFound == false) {
            logsNotFound = logsNotFound + 1;
            modelNotFound.addElement("<html><font color=#FF0000>NOT FOUND: </font> " + checkArray[i] + "</html>");
        }
    }

最佳答案

您可以一次构建一个哈希集,以加快搜索速度。

Set<String> set = new HashSet<String>(logArray);
for(String item : checkArray)
{
    if (set.contains(item)){
        //emit found
    } else {
        //emit not found
    }
}

关于java - 比较两个数组时如何显示另一个数组中缺少的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293430/

相关文章:

java - HashMap 与 Hashset 中的插入

java - 在java中使用两个同名的类

java - 如何使用 com.sun.jersey.api 从响应中读取自定义 Http header ?

java - Gretty:重复的片段名称:org_apache_jasper

iOS - 将 arrayIndex 限制在 0 到 98 之间

c - 错误检查,寻求一些指导

java - Android facebook sdk 使用graph api

php - 如何将两个值合并/合并到同一个数组中的单个键中

javascript - indexOf 无法在 Google Apps 脚本中工作

php - 如何在php中的foreach内的数组组中累积金额