我有类Container的对象X和Y. 两者都与ParameterMap对象相关联,它是一个映射String-String(请求参数值)。 让我们:
X exampleX;
Y exampleY;
我想知道exampleX是否与exampleY相同的ParameterMap相关联。 因为我真的不需要地图的值,我想我可以在类Container中存储一个整数,哈希函数的结果是对象被取消的parameterMap。 因此,如果X.parameterMapHash == Y.parameterMapHash,那么地图对于相同的键具有相同的值....
这是一个好方法吗?我怎么能在java中做到这一点?我需要一些东西来制作一个对象的哈希......
答案 0 :(得分:1)
您可以使用==
来确定两个变量是否引用同一个对象。
if (X.parameterMapHash == Y.parameterMapHash)
{
//they reference the same object
//doSomething
}
但是,如果你问如何弄清楚两个Maps
是否完全等价,但是没有必要引用同一个对象,那么你可以这样做:
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;
}