: 逻辑相等,就是逻辑上是相等的,比如id一样,判定它们相等,即使它们是两个不同的对象
什么时候应该覆盖equals
当类需要逻辑相等这个概念的时候就应该覆盖equals
比如要判断两个student是否是同一个人...,这个时候我们就需要按需重写equals
通用约定
重写equals的时候就必须要遵守它的通用约定
equals方法实现了等价关系(equivalence relation):
自反性(reflexive...(即equals相等,那么hashCode一定相等,需要注意的是,反过来不一定成立,即hashCode相等不代表equals相等)
如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的...如果是个数组,则需要把每个元素当做单独的域来处理。也就是说,递归地应用上述规则,对每个重要的元素计算一个散列码,然后根据步骤b中的做法把这些散列值组合起来。...如果不想写compareTo或者类并没有实现Comparable接口的可以自定义一个Comparator类来进行比较。
需要注意,排序是不允许出现逻辑漏洞的,否则会crash!