Home / Công nghệ Java / Java / Lớp HashMap trong Java

Lớp HashMap trong Java

Print Friendly, PDF & Email

Giới thiệu

HashMap là lớp sử dụng một bảng băm để cài đặt một kiểu dữ liệu từ giao diện Map (Map interface). Nó giảm thời gian thực hiện các phép toán cơ bản, như get()put(), xuống còn hằng số thậm chí khi làm việc những tập dữ liệu lớn.

The Map Hierarchy

The Map Hierarchy

Cách HaspMap hoạt động

HashMap hoạt động dựa trên nguyên lí của thuật toán băm (hashing). Để hiểu cách thức băm, chúng ta nên hiểu ba thuật ngữ đầu tiên, đó là Hàm băm (Hash Function), Giá trị băm (Hash Value), và Thùng/Rổ chứa các giá trị băm (Bucket).

Hàm băm, giá trị băm và thùng chứa là gì?

Hàm hashCode() trả về một giá trị nguyên làm vai trò của một hàm băm. Quan trọng, cần lưu ý rằng phương thức này xuất hiện trong lớp Object (là lớp cha/mẹ của mọi lớp khác trong Java).

Đây là mô tả hàm băm (hash function) (được  biết như là phương thức hashCode) trong lớp Object:

Điểm quan trọng cần lưu ý ở đây là phương thức hashCode ở trên trả về một giá trị kiểu số nguyên. Vì vậy giá trị băm (hash value) là giá trị nguyên được hàm băm ở trên trả về.

how hashmap works internally in java

How HashMap works internally in java

Lớp HashMap hỗ trợ 4 phương thức tạo/khởi tạo đối tượng. Phương thức đầu tiên để tạo/khởi tạo một đối tượng HashMap là xây dựng một bảng băm ngầm định:

Phương thức thứ hai khởi tạo một đối tượng HashMap bằng việc sử dụng một đối tượng HashMap khác, còn được gọi là hàm tạo sao chép.

Phương thức thứ ba khởi tạo một đối tượng bảng băm với sức chứa (capacity) cụ thể.

Phương thức thứ tư khởi tạo một đối tượng bảng băm với hai tham số sức chứa (capacity) và tỉ lệ làm đầy bảng băm (fillRatio).

Một số phương thức được định nghĩa thêm trong lớp HashMap

Ngoài những phương thức kế thừa từ các lớp cha, lớp HashMap định nghĩa thêm những phương thức sau:

VD: Ví dụ sau đây minh họa một vài phương thức mà lớp này hỗ trợ.

Chương trình này sẽ sinh ra kết quả như sau:

Tham khảo thêm:

https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

http://examples.javacodegeeks.com/core-java/util/hashmap/hashmap-changes-in-java-8/

http://javahungry.blogspot.com/2013/08/hashing-how-hash-map-works-in-java-or.html

http://sinhvienit.net/forum/hashmap-trong-java.353561.html

http://www.tutorialspoint.com/java/java_hashmap_class.htm

comments

About Nguyen Vu Ngoc Tung

I love making new professional acquaintances. Don't hesitate to contact me via nguyenvungoctung@gmail.com if you want to talk about information technology, education, and research on complex networks analysis (i.e., metabolic networks analysis), data analysis, and applications of graph theory. Specialties: researching and proposing innovative business approaches to organizations, evaluating and consulting about usability engineering, training and employee development, web technologies, software architecture.