Tôi đang tìm bản triển khai bản đồ băm tốt. Cụ thể, một trong số đó là tốt cho việc tạo ra một số lượng lớn các bản đồ, hầu hết trong số đó là nhỏ. Vì vậy, bộ nhớ là một vấn đề. Nó nên được thread-an toàn (mặc dù mất lẻ đặt có thể là một thỏa hiệp OK để trở lại cho hiệu suất tốt hơn), và nhanh chóng cho cả hai nhận được và đặt. Và tôi cũng muốn trăng trên một cây gậy, xin vui lòng, với một trật tự phụ của công lý.Java: bản đồ đa luồng: các so sánh triển khai như thế nào?
Các tùy chọn tôi biết là:
HashMap. Vô hại un-thread an toàn.
ConcurrentHashMap. Lựa chọn đầu tiên của tôi, nhưng điều này có một dấu chân bộ nhớ khổng lồ - khoảng 2k mỗi trường hợp.
Collections.sychronizedMap (HashMap). Đó là làm việc OK cho tôi, nhưng tôi chắc chắn phải có lựa chọn thay thế nhanh hơn.
Trove hoặc Colt - Tôi nghĩ rằng không phải cái nào trong số này an toàn cho thread, nhưng có lẽ mã có thể được điều chỉnh để được an toàn chỉ.
Mọi người khác? Bất kỳ lời khuyên về những gì nhịp đập những gì khi nào? Bất kỳ thuật toán bản đồ băm mới thực sự tốt nào mà Java có thể sử dụng thực hiện?
Cảm ơn trước về thông tin bạn đã nhập!
Đừng quên HashTable cũ. Không được chấp nhận, nhưng vẫn được tìm thấy xung quanh mã Java kế thừa. – Uri
@Uri: đó là Hashtable với chữ thường t :) Nói về di sản .. – BalusC
Bạn cũng có thể quản lý một số mở rộng dấu chân của ConcurrentHashMap bằng cách điều chỉnh đối số constructor concurrencyLevel. – Affe