Chỉ cần một vài phút sau tôi đã trả lời một câu hỏi hỏi về "kích thước có thể tối đa của HashMap trong Java". Như tôi đã luôn đọc, HashMap là cấu trúc dữ liệu có thể phát triển. Kích thước của nó chỉ bị giới hạn bởi kích thước bộ nhớ JVM. Do đó tôi nghĩ rằng không có giới hạn cứng về kích thước của nó và được trả lời tương ứng. (Điều này cũng áp dụng đối với HashSet là tốt.)Điều gì sẽ xảy ra khi đạt được dung lượng tối đa HashMap hoặc HashSet?
Nhưng một người nào đó sửa lại cho tôi nói rằng kể từ khi kích thước () phương pháp HashMap trả về một int, có là một giới hạn về kích thước của nó. Một điểm hoàn toàn chính xác. Tôi chỉ cố gắng để thử nghiệm nó trên địa phương của tôi nhưng không thành công, tôi cần nhiều hơn 8GB bộ nhớ để chèn hơn 2.147.483.647 số nguyên trong HashMap, mà tôi không có.
Câu hỏi của tôi là:
- xảy ra khi chúng ta cố gắng chèn 2,147,483,647 + 1 phần tử trong HashMap/HashSet gì?
- Có lỗi xảy ra không?
- Nếu có, lỗi nào? Nếu không phải điều gì xảy ra với HashMap/HashSet, các thành phần đã có của nó là và phần tử mới?
Nếu ai đó được hưởng quyền truy cập vào máy có bộ nhớ 16GB, bạn có thể dùng thử thực tế. :)
Thuộc về MapOverflow.com –
Bạn không cần RAM 16 GB. Chỉ cần có phiên bản Windows 64 bit và tạo một pagefile cho phần còn lại để kiểm tra. – Mehrdad
My Windows cũng là 32-bit :( – Bhushan