Hash Map Trong Python
Hình như hôm nay Noel 2017 thì phải =]]. Không biết nên cứ ngồi code thôi.
Lòng dòng thế thôi, hôm nay mình sẽ chia sẽ về Hash Map nhá. 😊😊😊.
Hashmap là gì? Hashtable là gì?
Giải thích khá dài dòng. Các bạn có thể xem ở đây đối với Hashmap và ở đây giúp mình.
Trong quá trình tìm kiếm, mình thắc mắc giữa Hash Map và Hash Table?
Lòng dòng thế thôi, hôm nay mình sẽ chia sẽ về Hash Map nhá. 😊😊😊.
Hashmap là gì? Hashtable là gì?
Giải thích khá dài dòng. Các bạn có thể xem ở đây đối với Hashmap và ở đây giúp mình.
Trong quá trình tìm kiếm, mình thắc mắc giữa Hash Map và Hash Table?
Mình xin nói ra 3 cái khác nhau giữa 2 em nó =)). Các bạn có thể xem tại đây. Mình chỉ việt hóa và giải thích thêm thôi.
Thứ nhất: Hash table thì cho phép code đồng bộ(synchronized), trái lại Hash map thì không. Điều đó làm cho Hash Map hoạt động tốt hơn Hash table( dịch là thế, nhưng theo mình nghĩ lập trình viên ưu tiên nhanh hơn thôi chứ thực sự ra thì Hash table an toàn hơn). Giải thích hơn code đồng bộ là thế nào? Mình trích ví dụ tại đây.
Tài khoản của công ty A có số dư là 10,000$. Sếp công ty này đi ăn nhậu với khách hàng và quyết định rút 2,000$ từ tài khoản. Giao dịch này được xử lý bởi một thead là thread1. Trong khi thread1đang hoàn tất giao dịch của và vẫn chưa kết thúc thì Kế Toán Trưởng công ty A bắt đầu thực hiện việc kiểm tra số dư tài khoản và thực hiện một giao dịch chuyển khoản ứng tiền 9,000$ cho khách hàng. Giao dịch thứ 2 được thực hiện bởi thread2.Lúc này do thread1 chưa kết thúc lên thread2 nên vẫn trả về số dư là 10.000$ và Kế Toán Trưởng giao dịch rút tiền 9,000$ của anh ta thực hiện thành công. Đồng thời khi thread1 thực hiện giao dịch thì số tiền dư vẫn lớn hơn 2.000$ nên Sếp công ty A vẫn có thể rút được tiền. Lúc này Ngân Hàng sẽ mất số tiền 1.000$.
Thứ hai: Hash table thì không cho phép key hoặc value null. Ngược lại thì Hash map cho phép điều đó.
Thứ ba: Một trong số class sub của Hash map là LinkedHashMap, vì thế mà trong trường hợp lặp dự đoán được(theo thứ tự chèn) thì bạn có thể chuyển đổi Hashmap cho một LinkedHashmap.
Nói tóm lại đây toàn là những data structures thôi. Khá là thú vị và truy xuất cực kỳ nhanh thôi qua vị trí index của nó :).
Để tìm kiếm chúng ta phải thực hiện việc so sánh tất cả các phần tử của mảng. Vậy độ phức tạp sẽ là O(n).
Nếu mảng đó được sắp xếp, áp dụng tìm kiếm nhị phân thì độ phức tạp sẽ giảm xuống còn O(log n).
Ngoài ra, việc tìm kiếm còn có thể nhanh
hơn nếu như hàm chỉ trả về một index của phần tử trong mảng. Trong
trường hợp này, độ phức tạp chỉ còn là O(1).
Hashmap dựa vào key để mà tìm kiếm theo vị trí nếu xác định được vị trí của key thì ta có thể dễ dàng của Hashmap :)
Các bạn tham khảo code của mình, nếu có gì sai sót thì contact với mình nha.
Xin cảm ơn các bạn rất nhiều. 😊😊😊.