thớt ế quá thôi góp gạch xây nhà vậy
viết sơ sài quá:
-
“nhưng mỗi key thì có thể được ánh xạ đến nhiều hơn một giá trị”: câu cú lủng củng, đúng ra phải là 1 value có thể có nhiều key ánh xạ tới. 1 key ánh xạ tới 1 value chứ làm gì 1 key ánh xạ tới 10 value??
-
“độ phức tạp chỉ còn là O(1). Đó chính là Hash Function.” O(1) mà hash function ở đâu lòi ra đây? Ko ăn nhập gì với phần mảng chưa/đã sắp xếp ở trên…
-
tại sao bucket lại sử dụng linked list để lưu trữ? ArrayList được ko?
-
“Lưu ý nho nhỏ, độ phức tạp của hàm get() và put() trong HashMap là O(1) vì nó sử dụng hashCode để tìm giá trị”: put() lúc nào cũng có có đpt là O(1) thiệt à? Hay còn thiếu từ gì đó?
-
“Và bây giờ tôi chắc chắn rằng các bạn đang thắc mắc, hash thì cũng chỉ là một con số, khả năng trùng nhau là có”:có 1 nguyên tắc cực kì nổi tiếng và cực kì đơn giản để khẳng định trùng bucket / trùng hash code là có, sao ko nêu ra…
-
“Tất cả các class đều có thể là key nếu nó được override hàm equals() và
hashCode(), ngoài ra việc này cũng giúp biến các class trở thành
immutable class”: thiệt vậy sao? Chỉ cần override equals() và hashCode() là class trở thành immutable à?
-
“Hàm get(Object key) cũng kiểm tra xem key có null hay
không. Null cũng được coi là một key trong HashMap, và dĩ nhiên chỉ có
một key null. Nếu key là null thì hash luôn luôn là 0 và tương ứng index
cũng là 0. Nếu key không phải là null thì gọi hash function tương ứng
với key.”
return (e = getNode(hash(key), key)) == null ? null : e.value;
dòng này có phải là kiểm tra Object key == null đâu? get(key) trả về null khi key ko có trong map (e == null). Còn cái e.value có null hay ko thì bố ai biết…
-
phần performance thì ko có cũng được, viết thêm chả để làm gì @_@ Nếu viết thì phải nêu tầm quan trọng của hash function ảnh hưởng tới performance thế nào (vd trùng hash code), rồi nêu cái load factor vô, hoặc nêu ưu/nhược của hash map so với tree map / avl binary tree, v.v…
bài viết tên là “hoạt động như thế nào?” mà chả thấy đá động gì tới put() nó tăng bucket lên thế nào, chỉ đơn giản là x2 số lượng bucket thôi à? Tại sao x2 mà ko phải x3 x1.5… Hoặc còn có chiến thuật gì khác ko? v.v…