2016-06-15 11 views
5

Tôi muốn lưu trữ số lượng lớn các chuỗi trong một Map<String, MagicObject>, để có thể truy cập nhanh chóng MagicObjects. Có rất nhiều mục vào Bản đồ này mà bộ nhớ đang trở thành một nút cổ chai. Giả sử không thể tối ưu hóa MagicObjects, loại bản đồ hiệu quả nhất mà tôi có thể sử dụng cho tình huống này là gì? Tôi hiện đang sử dụng như sau:Phương pháp lưu trữ hiệu quả nhất một số lượng lớn các chuỗi trong bản đồ là gì?

gnu.trove.map.hash.TCustomHashMap<byte[], MagicObject> 
+0

Tôi sẽ ngạc nhiên nếu một bản đồ khác đột nhiên sử dụng ít bộ nhớ hơn, nhưng tôi không quen với việc tối ưu hóa ứng dụng để sử dụng bộ nhớ. –

+2

Bạn không thay đổi mô hình bộ nhớ JVM bằng cách chuyển cấu trúc dữ liệu. – duffymo

+0

Tại sao không phải là một THashMap? –

Trả lời

2

Nếu phím của bạn có rất nhiều tiền tố phổ biến sau đó bạn có thể tiết kiệm bộ nhớ bằng cách sử dụng một cấu trúc dữ liệu trie (cây tiền tố). Câu trả lời cho this question trỏ đến một vài triển khai thực hiện của trie.

1

Để mở tâm trí, hãy xem xét Huffman coding để nén chuỗi trước tiên trước khi đặt vào bản đồ, miễn là chuỗi của bạn được cố định (số và nội dung chuỗi không thay đổi).

Các vấn đề liên quan