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