关于equals和hashCode与==的问题
//根据value查找key
public K getKeyByValue(V val)
{
for(K key:keySet())
{
if(get(key).equals(val) && get(key) == val) (1)
{
return key;
}
}
return null;
}
重写HashMap的put方法,该方法不允许value重复
public V put(K key,V value)
{
for(V val:valueSet())
{
if(val.equals(value) && val.hashCode()==value.hashCode()) (2)
{
throw new RuntimeException("MyMap实例中不允许有重复value!");
}
}
return super.put(key, value);
}
(1)处的get(key) == val不包括前面的get(key).equals(val)吗?为什么两个都要写呢?
(2)处的哪位能解释下意思吗?对HashCode的相等和“==”号以及equals分辨不清楚各自的用处。
谢谢!~~~