Tôi muốn biết rằng Clojure sử dụng băm 32 bit để thực hiện bản đồ, nếu bản đồ Clojure do đó có giới hạn 2^32-1 khóa (và nếu điều này không đúng, cách nó quản lý va chạm) và nếu việc triển khai băm của nó là consistent. TIA!Giới hạn bản đồ Clojure và tính nhất quán
Trả lời
bản đồ Clojure là một thực hiện tùy chỉnh mà là dai dẳng và bất biến (ví dụ: nó không hashmaps sử dụng Java, điều này sẽ không cung cấp đủ hiệu suất khi sử dụng trong một cấu trúc dữ liệu không thay đổi).
Nó sử dụng mã băm 32 bit, do đó 2^32 nhóm băm có thể. Trong trường hợp va chạm, khóa và giá trị được lưu trữ trong một mảng cho mỗi nhóm băm sao cho nó là có thể có nhiều hơn 2^32 khóa. Xem PersistentHashMap source - đặc biệt lớp bên trong HashCollisionNode được sử dụng để lưu trữ một nhóm khóa/giá trị dựa vào một giá trị hashcode duy nhất.
Vì số lượng nhóm băm có thể cố định, băm nhất quán không liên quan - khóa không bao giờ cần phải được ánh xạ lại.
Xem thêm:
- http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey (trình bày giải thích cách tiếp cận Clojure để đồng thời nhưng cũng bao gồm các dai dẳng bất biến cấu trúc dữ liệu)
Cảm ơn bạn rất nhiều! –
- 1. API Google Maps V3: giới hạn bản đồ giới hạn
- 2. Tính nhất quán của phông chữ trong văn bản
- 3. Bản đồ Android - Giới hạn ở 180 độ
- 4. Cách tốt nhất để giới hạn phiên bản dùng thử?
- 5. Erlang và giới hạn bản ghi thời gian chạy
- 6. GROUP BY và tập hợp trên Vector bản đồ - Clojure
- 7. Có nên đọc nhiều lần chỉnh sửa Clojure trong giao dịch để nhất quán không?
- 8. Bản đồ hai hướng trong clojure?
- 9. Bản đồ và hồ sơ bình đẳng trong Clojure
- 10. Clojure liên tục và chức năng bản đồ
- 11. Có thể tạo biểu đồ hình tròn với tính nhất quán của đối tượng không?
- 12. Tính nhất quán của phông chữ trong suốt Dự án?
- 13. Loại Scala: giới hạn trên ít nhất
- 14. Bản đồ thế giới Javascript
- 15. Bao bì chứa đựng để duy trì tính nhất quán
- 16. jVectorNhập bản đồ (thế giới) kích thước bản đồ
- 17. Chuyển đổi một vector của bản đồ tới bản đồ bản đồ trong Clojure
- 18. Clojure áp dụng so với bản đồ
- 19. Kênh alpha không nhất quán trong ba.js
- 20. Giới hạn API Google Maps
- 21. Cách giới hạn chiều rộng văn bản
- 22. Giới hạn iOS 5.1 và Safari Mobile
- 23. API đồ thị trên iOS và Facebook: Không nhất quán cho phép các vấn đề
- 24. Redis có hỗ trợ tính nhất quán cao không
- 25. Tính nhất quán khóa-giá trị trong từ điển python
- 26. Đã đạt đến Hạn ngạch Bản đồ Tĩnh của Google nhưng không đến gần 25.000 giới hạn
- 27. Bản đồ máy tính: giá trị tính toán trước thời hạn
- 28. Kiểm tra tính nhất quán của glibc Heap Kiểm tra
- 29. Tính nhất quán của Cache khi sử dụng memcached và rdbms như MySQL
- 30. Cách điền bản ghi Clojure từ bản đồ?
Các bạn đã nhìn vào mã nguồn? – pmdj
Vâng, nhưng tôi không thể hiểu đầy đủ vì tôi không phải là nhà phát triển Java: từ những gì tôi đã hiểu hàm băm là hasheq đại biểu cho Integer trong trường hợp cụ thể mà khóa là một phương thức Integer và key hasheq Object. Nhưng tôi không thể hiểu (hoặc ngược lại dấu vết) hàm băm được sử dụng, nếu các va chạm hỗ trợ bản đồ và nếu hàm băm là nhất quán! –
(Tôi sẽ không bao giờ hiểu một số downvotes) –