从ParameterMap对象创建哈希

时间:2013-07-15 16:37:02

标签: java hash

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

X exampleX;
Y exampleY;

我想知道exampleX是否与exampleY相同的ParameterMap相关联。 因为我真的不需要地图的值,我想我可以在类Container中存储一个整数,哈希函数的结果是对象被取消的parameterMap。 因此,如果X.parameterMapHash == Y.parameterMapHash,那么地图对于相同的键具有相同的值....

这是一个好方法吗?我怎么能在java中做到这一点?我需要一些东西来制作一个对象的哈希......

1 个答案:

答案 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;
}