2013-07-15 62 views
0

我有Container类的对象X和Y. 两者都与一个ParameterMap对象关联,这是一个映射String-String(请求参数值)。 让是:从ParameterMap对象创建一个散列

X exampleX; 
Y exampleY; 

我想知道,如果exam​​pleX与同样作为parameterMap的exampleY asociated。 因为我真的不需要地图的值,我想我可以在类Container中存储一个整数,哈希函数的结果存储在对象所在的参数映射中。 所以,如果X.parameterMapHash == Y.parameterMapHash,那么地图有相同的键相同的价值观....

这是一个好办法?我怎样才能在java中做到这一点?我需要一些东西来做一个哈希从一个对象...

回答

1

您可以使用==来确定如果两个变量引用同一个对象。

if (X.parameterMapHash == Y.parameterMapHash) 
{ 
    //they reference the same object 
    //doSomething 
} 

不过,如果你问如何找出如果两个Maps是完全等价的,但不necessairly引用同一个对象,那么你可以这样做:

boolean checkKeysAndValues() 
{ 
    if(X.parameterHashMap.size() == Y.parameterHashMap.size()) 
    { 
     for (Map.Entry<String, String> entry : X.parameterHashMap.entrySet()) 
     { 
      if (!(Y.ParameterHashMap.containsKey(entry.getKey()) && 
       Y.ParameterHashMap.get(entry.getKey()).equals(entry.getValue())) 
      {    
       return false; 
      } 
     } 
     return true; 
    } 
    return false; 
}