Các phần tử bên trong HashMap được lưu trữ dưới dạng một mảng của danh sách (nút) được liên kết, mỗi danh sách được liên kết trong mảng biểu thị một nhóm cho giá trị băm duy nhất của một hoặc nhiều khóa.
Trong khi thêm một mục trong HashMap, mã băm của khóa được sử dụng để xác định vị trí của nhóm trong mảng, đại loại như:
location = (arraylength - 1) & keyhashcode
Ở đây & đại diện cho toán tử bitwise AND.
Ví dụ: 100 & "ABC".hashCode() = 64 (location of the bucket for the key "ABC")
Trong quá trình vận hành, nó sử dụng cùng một cách để xác định vị trí của thùng cho khóa. Trong trường hợp tốt nhất, mỗi khóa có mã băm duy nhất và kết quả là một nhóm duy nhất cho mỗi khóa, trong trường hợp này, phương thức get chỉ dành thời gian để xác định vị trí của nhóm và lấy giá trị không đổi O (1).
Trong trường hợp xấu nhất, tất cả các khóa đều có cùng mã băm và được lưu trong cùng một nhóm, điều này dẫn đến việc duyệt qua toàn bộ danh sách dẫn đến O (n).
Trong trường hợp của java 8, nhóm Danh sách được liên kết được thay thế bằng TreeMap nếu kích thước tăng lên hơn 8, điều này làm giảm hiệu quả tìm kiếm trường hợp xấu nhất thành O (log n).