Trong lập trình Java, Equal và Hashcode là những phương thức quan trọng đối với tất cả các Object. Vậy Equal, Hashcode là gì? Chúng quan trọng như thế nào trong lập trình Java? Mục đích sử dụng và cách để thao tác với Equal và Hashcode trong lập trình hướng đối tượng Java. Bài viết dưới đây với những ví dụ minh hoạ kèm theo trong mỗi phần sẽ giúp bạn hiểu được Equal và Hashcode cũng như biết được cách áp dụng hai phương thức này vào trong thực hành lập trình Java. 1. Equal trong lập trình Java là gìPhương thức equals được sử dụng trong hầu hết các tập hợp để kiểm tra xem phần tử đã tồn tại trong tập hợp hay chưa. Ví dụ như mình muốn kiểm tra xem giá trị 123 đã có trong tập hợp list chưa ở ví dụ sau: 1 2 3 4 List list = new ArrayList(); list.add("123"); boolean contains123 = list.contains("123");
1 2 3 List list = new ArrayList(); list.add("123"); boolean removed = list.remove("123");
1 2 3 4 5 public class Employee { }Ví dụ ta mong muốn nến 2 đối tượng Employee mà có cùng employeeId thì nó là bằng nhau. Ta tiến hành override phương thức equals như sau. 1 2 3 4 5 6 7 8 9 10 public class Employee { public boolean equals(Object o){ }
}
Như vậy equals được sử dụng trong tập hợp để so sánh các phần tử nhằm mục đích kiểm tra phần tử có tồn tại hay chưa hoặc mình muốn xóa nó ra khỏi tập hợp. 2. HashCode trong lập trình Java là gìVí dụ như anh có một lớp Student gồm có 2 thuộc tính là id và name như sau 1 2 3 4 5 6 7 8 9 10 11 public class Student { private int id; private String name public Student(int id,String name) { }
}
List list = new ArrayList(); list.add("123"); boolean contains123 = list.contains("123"); 0 List list = new ArrayList(); list.add("123"); boolean contains123 = list.contains("123"); 1
Như vậy hàm hashCode có nghĩa là sẽ trả về một số duy nhất tương ứng với từng object. Mỗi Object trong java đều có 1 định danh và định danh để phân biệt mỗi object chính là giá trị hashcode. Tương tự như chúng ta đều có một số chứng minh nhân dân vậy.
Khi ta tạo một đối tượng thì đối tượng đó sẽ được lưu vào bộ nhớ HEAP và nó được lưu tại một địa chỉ trong bộ nhớ. Hashcode được tạo ra cho đối tượng bằng cách kết hợp giữa địa chỉ bộ nhớ cộng thêm các tác nhân khác (như nhân thêm 30 rồi cộng thêm 2) sau đó sẽ cho ra một mã hashcode. |