gpt4 book ai didi

java - 如何查找 hashmap a 中的值在 hashmap b 中是否不存在

转载 作者:行者123 更新时间:2023-12-02 07:40:25 25 4
gpt4 key购买 nike

我有两个不同的带有查询结果的 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);

最佳答案

逻辑有问题。您希望找到 A 记录中不存在的记录,但每次迭代 HashMap 的值不相等时都会增加计数器(在这种情况下您将得到更大的 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 方法之后进行比较,而是比较对象(我认为您没有 ovverite 对象的 toString 方法来返回有效标识符来比较它们。在大多数情况下,它不会返回您需要的内容。或者在换句话说,您应该在 HashMap 中检查所有可能对象的 equals 方法,并使用下一个代码进行比较:

mapA.get(j).get("folio").equals(mapB.get(k).get("folio"))

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

关于java - 如何查找 hashmap a 中的值在 hashmap b 中是否不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com