在我的程序中,鍵值對經常被添加到Map
,直到添加1G對爲止。地圖大小調整會減慢過程。我如何設置最小Map
大小,例如1000000007(這是一個素數)?在Java中設置地圖的最小尺寸
回答
如何設置最小地圖大小,例如1000000007(這是一個素數)?
使用HashMap(int)
或HashMap(int, float)
構造函數。容量是int
參數。
HashMap的大小應該是質數以最小化羣集。所述
HashMap
構造的
過去和當前的實現方式中都將選擇一個容量爲2(最多2 ),其是大於或等於所提供的容量最小的功率。所以使用素數不起作用。
構造函數會阻止map調整大小嗎?
HashMaps不會調整大小。
(注:大小和能力是不同的東西。該size()
方法返回的數量目前在Map
條目。你不能「設置」的大小。)
其實,這是他的問題,而不是如何創建一個初始大小的地圖。 –
@ROMANIA \t不,最初的問題是如何創建一個最小尺寸的地圖。這是正確的問題。 –
@DaveNewton,這是有爭議的,但他希望(根據標題)**在Java中設置Map的最小大小**,而不是**在Java中設置Map的初始大小**。這就是我所理解的 - 他相信'HashMap'會在某些動作中縮小其大小,並且他想要修復最小尺寸。 –
一可能的事情,你應該注意。 HashMap中的桶數是2的冪(可能不是將來),2的下一個冪是2^30。負載因素決定了它應該增長Map的大小。通常這是0.75。
如果您將容量設置爲預期的大小,
- 輪高達2
- 下一個功率容量*達到0.75時仍可能調整。
- 無論如何都被限制在2^30,因爲它是數組大小的2倍。
構造函數會阻止map調整大小嗎?
要做到這一點的唯一方法是將所有元素複製到一個新的地圖。這不是自動完成的。
實際上,** _當前實現_ **中的HashMap的數量是2的冪。它可能不會改變,但是實現細節不是*接口契約的一部分,不應該被依賴上。它可能並不總是2的冪。 – AJNeufeld
- 1. 設置JInternalFrame的最小尺寸
- 2. 設置表格的最小尺寸
- 3. JAVA設置JFrame的最大尺寸
- 4. UIScroll視圖設置初始圖像尺寸小於全尺寸
- 5. Java(Eclipse)WindowBuilder設置最大尺寸
- 6. JPanel的Java設置尺寸
- 7. 如何在Android中爲ImageView設置最小和最大尺寸
- 8. 最小化圖片尺寸
- 9. 設置QBoxLayout最大尺寸?
- 10. 設置圖像最大尺寸
- 11. 在codenameone中設置組件的最小尺寸
- 12. 如何在fxml中設置容器的最小尺寸
- 13. 如何在wxRuby中設置窗口的最小尺寸
- 14. 雅虎地圖設置Smartwindow尺寸
- 15. 設置圖形圖尺寸
- 16. 根據內容的大小設置幀的最小尺寸
- 17. gtk最小尺寸
- 18. 在HTML中設置圖像尺寸
- 19. 在JButton中設置圖像的大小/尺寸
- 20. 使用WINAPI設置窗口的最小和最大尺寸
- 21. 設置窗口的最小和最大尺寸
- 22. 以最小尺寸呈現標準尺寸的圖像
- 23. C++和java中地圖對象的最大尺寸是多少?
- 24. GGplot2的最小尺寸geom_text()
- 25. Android:已下載在ImageView中設置的圖像尺寸小於包中的相同尺寸圖像
- 26. 設置JPanel的最大尺寸內BorderLayout.CENTER
- 27. 如何設置JFrame的最大尺寸?
- 28. 設置JFrame的最大尺寸
- 29. 設置一個JDialog的最大尺寸?
- 30. 谷歌靜態地圖在Android設備上的最大尺寸
使用具有初始大小的構造函數嗎? –
構造函數是否會阻止地圖調整大小? – Stepan
我投票結束這個問題,因爲OP沒有做任何研究。有一個正是這個目的的構造函數。 – f1sh