Đôi khi cần kết hợp các container lại với nhau bằng hàm join và nhận về một container mới. Chúng ta sẽ viết một phương thức join tĩnh nhận 2 HashTable và tạo một HashTable mới chứa tất cả giá trị. Để đơn giản, ta sẽ cho giá trị từ cái thứ 2 ghi đè giá trị của cái thứ 1 nếu có khóa xuất hiện trong cả hai.
Ví dụ
static join(table1, table2) {
// Kiểm tra cả 2 tham số có phải HashTable không
if(!table1 instanceof HashTable || !table2 instanceof HashTable) {
throw new Error("Illegal Arguments")
}
let combo = new HashTable();
table1.forEach((k, v) => combo.put(k, v));
table2.forEach((k, v) => combo.put(k, v));
return combo;
}
Bạn có thể kiểm tra bằng cách sau:
Ví dụ
let ht1 = new HashTable(); ht1.put(10, 94); ht1.put(20, 72); ht1.put(30, 1); let ht2 = new HashTable(); ht2.put(21, 6); ht2.put(15, 21); ht2.put(32, 34); let htCombo = HashTable.join(ht1, ht2) htCombo.display();
Ví dụ
Điều này sẽ cho ra kết quả:
0: 1: 2: 3: 4: { 15: 21 } 5: 6: 7: 8: { 30: 1 } 9: { 20: 72 } 10: { 10: 94 } --> { 21: 6 } --> { 32: 34 }