1. 程式人生 > >equals方法與hashcode方法

equals方法與hashcode方法

  • 在Java中,equals方法和hashcode方法都是用來對比兩個物件是否相等。
  • 預設情況下equals比較的是兩個物件的雜湊碼,hashcode則負責獲取引用物件的雜湊碼。一般情況下,在覆蓋equals方法時,同時也要覆蓋hashcode方法。
  • 不同物件可能有相同的雜湊碼,因為自身演算法的原因,所以當a.equals(b) == true(物件值相同)時,兩個物件一定相等,但是如果兩個物件的雜湊碼相等卻不能斷定兩個物件是相等的。

equals和hashcode的使用在集合框架Set中有體現:

  • 將物件放入到集合中時,首先判斷要放入物件的hashCode值與集合中的任意一個元素的hashCode值是否相等。
  • 如果不相等直接將該物件放入集合中。如果hashCode值相等,然後再通過equals方法判斷要放入物件與集合中的任意一個物件是否相等,如果equals判斷不相等,直接將該元素放入到集合中,否則不放入。

具體流程如下圖所示:
在這裡插入圖片描述