contains(), containsKey(), containsValue(), equals(), hashCode()

contains(), containsKey(), containsValue()

调用 equals() 方法来判断

对于 Object 类,
public boolean equals(Object obj)

   其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false.
   所以,在默认情况下, equals() 和 == 等价,均比较引用值(即地址),除非那些已经重写 equals() 方法的类


在开发中, 自定义类,如果要调用这些方法来判断,必须重写 equals() 和 hashCode(),否则,始终为 false
根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。
注意,在重写equals方法时,要注意满足离散数学上的特性
1、自反性   :对任意引用值X,x.equals(x)的返回值一定为true.
2 对称性:   对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为tue;
3 传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4 一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5 非空性:任何非空的引用值X,x.equals(null)的返回值一定为false

你可能感兴趣的:(hashCode())