Khi thêm các phần tử vào bảng băm, phần quan trọng nhất là giải quyết xung đột. Chúng tôi sẽ sử dụng chuỗi cho cùng một. Bạn có thể đọc các thuật toán khác tại đây:https://en.wikipedia.org/wiki/Hash_table#Collision_resolution
Bây giờ chúng ta hãy nhìn vào việc thực hiện. Chúng tôi sẽ tạo một hàm băm chỉ hoạt động trên các số nguyên để đơn giản hóa việc này. Nhưng một thuật toán phức tạp hơn có thể được sử dụng để băm mọi đối tượng -
Ví dụ
put(key, value) { let hashCode = hash(key); for(let i = 0; i < this.container[hashCode].length; i ++) { // Replace the existing value with the given key // if it already exists if(this.container[hashCode][i].key === key) { this.container[hashCode][i].value = value; return; } } // Push the pair at the end of the array this.container[hashCode].push(new this.KVPair(key, value)); }
Bạn có thể kiểm tra điều này bằng cách sử dụng
Ví dụ
let ht = new HashTable(); ht.put(10, 94); ht.put(20, 72); ht.put(30, 1); ht.put(21, 6); ht.put(15, 21); ht.put(32, 34); ht.display();
Đầu ra
Điều này sẽ cung cấp đầu ra -
0: 1: 2: 3: 4: { 15: 21 } 5: 6: 7: 8: { 30: 1 } 9: { 20: 72 } 10: { 10: 94 } -->{ 21: 6 } -->{ 32: 34 }