Java 如果hashmap a中的值在hashmap b中不存在,如何查找

Java 如果hashmap a中的值在hashmap b中不存在,如何查找,java,hashmap,Java,Hashmap,我有两个不同的hashmap和查询结果,尽管这两个hashmap是不同大小的hashmap,我正在尝试查找hashmap A中存在但hashmap B中不存在的记录 到目前为止,我将发布我的代码;我通过sql进行了比较,得到了我想要的结果,但是当我尝试将其放入代码中时,我没有成功。我希望你能给我指出正确的方向。提前谢谢 HashMap<Integer, HashMap<String, Object>> mapA = new HashMap<>(); HashM

我有两个不同的hashmap和查询结果,尽管这两个hashmap是不同大小的hashmap,我正在尝试查找hashmap A中存在但hashmap B中不存在的记录

到目前为止,我将发布我的代码;我通过sql进行了比较,得到了我想要的结果,但是当我尝试将其放入代码中时,我没有成功。我希望你能给我指出正确的方向。提前谢谢

HashMap<Integer, HashMap<String, Object>> mapA = new HashMap<>();
HashMap<Integer, HashMap<String, Object>> mapB = new HashMap<>(); 

int m=0;

for (int j = 0; j < mapA.size(); j++) {
    for (int k = 0; k < mapB.size(); k++) {
        if (!mapA.get(j).get("folio").toString().equals(
             mapB.get(k).get("folio").toString())) {
            m++; // count many records not exist on mapB
        }
    }
}
System.out.println(m);
HashMap-mapA=newhashmap();
HashMap mapB=新的HashMap();
int m=0;
对于(int j=0;j
我不确定我是否理解你的方法。更合适的方法是(在伪代码中):


逻辑上有错误。您希望查找不存在于记录中的值,但每次当两个迭代哈希映射的值不相等时,计数器都会递增(在本例中,您将得到更大的m)。您的代码应该如下所示

for (int j = 0; j < mapA.size(); j++) {
    boolean found=false;
    for (int k = 0; k < mapB.size(); k++) {
        if (mapA.get(j).get("folio").toString().equals(
            mapB.get(k).get("folio").toString())) {
            found=true;   
            break;
        }
    }

    if (!found){
       m++; // count many records not exist on mapB
    }
}

在您的情况下(使用toString),Comparison可能会返回false,因为典型的toString返回对象的类和ID。

我将尝试该伪代码,基本上我需要的是从hashmap a中获取hashmap b中不存在的所有元素。我让你知道,如果这样做,我还提到hashmaps是不同大小的hashmap b作为索引作为字符串,还存储一个objectjet不同大小的hashmaps对这个不重要。只要你做了正确的比较,就应该成功。好吧,还是没有运气,还有其他建议吗?@Cobol你能编辑你的问题来显示你尝试了什么以及发生了什么吗?
for (int j = 0; j < mapA.size(); j++) {
    boolean found=false;
    for (int k = 0; k < mapB.size(); k++) {
        if (mapA.get(j).get("folio").toString().equals(
            mapB.get(k).get("folio").toString())) {
            found=true;   
            break;
        }
    }

    if (!found){
       m++; // count many records not exist on mapB
    }
}
mapA.get(j).get("folio").equals(mapB.get(k).get("folio"))