包含地图地图中的对象

时间:2013-12-03 17:09:09

标签: java

我有一张地图地图,我需要查看一个对象是否在地图的值中。

以前,代码看起来像这样:

objectMap = new HashMap<String, byte[]>();

protected boolean containsObject(final byte[] testObject) {
for(byte[] bytes : objectMap.values()) {
  if (Arrays.equals(bytes, testObject)) {
    return true;
  }
}
return false;
}

这很好用。但是,objectMap现已更改为:

objectMap = new HashMap<String, Map<String, byte[]>>();

现在我需要使用相同的containsObject方法......

protected boolean containsObject(final byte[] testObject) {
for(Map<String, byte[]> map : objectMap.values()) {
  if (value of map.equals(testObject)) {
    return true;
  }
}
return false;
}

我不确定的是如何获取正在迭代的地图的值,因为我没有可以使用的密钥。

感谢。

4 个答案:

答案 0 :(得分:3)

获取values的{​​{1}}。您已调用values来获取第一个示例中的values()。现在,您将获得另一个byte[],您可以再次致电Map

values()

答案 1 :(得分:0)

您的测试是一个映射等于一个byte []。这在逻辑上是不正确的。

您需要遍历地图的值并检查每个值:

protected boolean containsObject(final byte[] testObject) {
   for(Map<String, byte[]> map : objectMap.values()) {
       for(byte[] b : map.values()) {
            if (Arrays.equals(b,testObject)) {
               return true;
            }
       }
   }
   return false;
}

答案 2 :(得分:0)

我认为您可以尝试使用外部地图的keySet() - 方法。像这样:

protected boolean containsObject(final byte[] testObject) {
  for(Map<String, byte[]> map : objectMap.values()) {
    for (String key : map.keySet()) {
      if(map.get(key).equals(testObject) {
        return true;
      }
    }
  }
  return false;
}

答案 3 :(得分:0)

您可以使用Map.Entry访问它,这是一个示例:

for(Map.Entry<Integer, String> entry : objectMap ) {  
  System.out.println(" Key: " + entry.getKey());  
  System.out.println(" Value: " + entry.getValue());  
  entry.setValue("Khanjian");  
}