Hash Code Là Gì

     
Phương thức equals() và cách tiến hành hashCode() vào JavaBy TuanKhoi_Kid1402Last update: 1 year ago

Phương thức equals() và cách làm hashCode() là hầu hết phương thức rất đặc biệt quan trọng đối với tất cả các đối tượng người tiêu dùng trong Java. Trong bài viết này, mình sẽ trình diễn với vớ cả các bạn những kỹ năng cơ bạn dạng về hai cách thức này chúng ta nhé!

Mặc định, những phương thức này được tư tưởng trong đối tượng Object, là đối tượng thân phụ của tất cả các đối tượng người sử dụng trong Java. Tuy vậy để sử dụng đúng mục tiêu của 2 cách thức này, họ cần override lại chúng trong các đối tượng của chúng ta.Bạn đã xem: Hash code là gì

Phương thức equals()

Phương thức này dùng để làm kiểm tra 2 đối tượng bất kỳ có bằng nhau hay không?

Như các bạn đã biết, trong Java chúng ta có 2 kiểu tài liệu cơ phiên bản là primitive cùng object. Đối với những biến primitive, chúng ta có thể sử dụng toán tử “==” để đối chiếu giữa hai biến hóa bất kỳ, lấy ví dụ như như:

1234567891011package com.huongdanjava.example;public class Example public static void main(String args) int b = 2; int c = 2; System.out.println(b == c);

Kết quả:




Bạn đang xem: Hash code là gì

*

Nhưng đối với kiểu tài liệu object thì bắt buộc họ phải override lại cách làm equals() trong đối tượng người dùng Object để so sánh xem 2 đối tượng người tiêu dùng cùng class có cân nhau hay không?

Ví dụ, mình có đối tượng Student như sau:

Bây giờ, mình sẽ sử dụng phương thức equals() mà đối tượng Student thừa kế từ đối tượng người tiêu dùng Object để so sánh xem liệu 2 đối tượng người tiêu dùng Student tất cả cùng firstName, middleName, lastName với country có đều nhau hay không các bạn nhé!

1234567891011121314151617181920package com.huongdanjava.example;public class Example public static void main(String args) Student student1 = new Student(); student1.setFirstName("Khanh"); student1.setMiddleName("Huu"); student1.setLastName("Nguyen"); student1.setCountry("Viet Nam"); Student student2 = new Student(); student2.setFirstName("Khanh"); student2.setMiddleName("Huu"); student2.setLastName("Nguyen"); student2.setCountry("Viet Nam"); System.out.println(student1.equals(student2));

Kết quả:


*



Xem thêm: Khung Sườn Xe Đạp Fixed Gear, Mua Xe Đạp Fixed Fear Hãng Nào Tốt

Như chúng ta thấy, tuy nhiên 2 Students gồm cùng tên với country tuy nhiên Java vẫn ko xem chúng là một. Để xử lý vấn đề này, bọn họ sẽ override lại cách thức equals() trong đối tượng người dùng Student như sau:

Trong thủ tục equals() được override sống trên, mình đã kiểm tra tất cả các trực thuộc tính của đối tượng người tiêu dùng Student. Chỉ lúc nào tất cả các thuộc tính của 2 đối tượng người tiêu dùng student1 và student2 giống như nhau thì thủ tục này bắt đầu trả về true. Và khi đó, Java đã xem 2 đối tượng người dùng này là bằng nhau.

Khi đó hiệu quả sẽ là:


*



Xem thêm: Cách Làm Lạp Xưởng Không Bị Chua, Lạp Xưởng Bị Chua Phải Làm Sao

Phương thức hashCode()

Khi search kiếm một đối tượng ngẫu nhiên trong HashMap tốt HashTable, trước tiên Java vẫn lấy hash value của đối tượng key mà họ muốn tra cứu kiếm. Kế tiếp nó đã kiểm tra những bucket nhằm xem giá trị hash value đó có trùng khớp cùng với bucket nào tốt không. Nếu thoả mãn một bucket nào kia thì Java sẽ trả về quý hiếm của đối tượng người tiêu dùng value mà chúng ta muốn kiếm tìm kiếm.

Nhiều đối tượng hoàn toàn có thể có cùng hash value, và vì vậy chúng có thể nằm phổ biến một bucket. Trong trường thích hợp này, Java sẽ sử dụng tiếp cách làm equals() để tìm đúng mực đối tượng value mà họ muốn tìm kiếm.

Ở đây chúng ta có một khái niệm gọi là contract giữa cách thức equals() và phương thức hashCode() kia là:

Nếu hai đối tượng người dùng là đều nhau thì chúng phải tất cả cùng hashCode().Nếu hai đối tượng người sử dụng có thuộc hashCode() thì chúng có thể bằng nhau hoặc là không.equalshashCodeJava