Yefei.Blog

个人日记 WIKI

用户工具

站点工具


java:equals

对象是否相等

equals 用来比较两个对象内容是否相等,与 == 不同。== 永远都是比较两个对象的地址 System.identityHashCode(Object)是否相等。

Object.equals 的默认实现方式是 ==

比如比较两个对象的内容是否相等就绝对不能使用 ==,必须使用 equals 方法,例如 String 对象。

在一些情况下需要覆盖 equals 实现,去比较内容是否相等。

对于集合类HashSet、HashMap等和hash有关的类(以HashSet为例),是通过hash算法来散列对象的。 对HashSet而言,存入对象的流程为:根据对象的hash码,经过hash算法,找到对象应该存放的位置,如果该位置为空,则将对象存入该位置; 如果该位置不为空,则使用equals()比较该位置的对象和将要入的对象,如果两个相等,则不再插入,如果不相等,根据hash冲突解决算法将对象插入其他位置。

java/equals.txt · 最后更改: 2016/10/19 23:57 由 yefei