在我的程序中,键值对经常被添加到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. 设置表格的最小尺寸
- 2. 设置JInternalFrame的最小尺寸
- 3. JAVA设置JFrame的最大尺寸
- 4. Java(Eclipse)WindowBuilder设置最大尺寸
- 5. 如何在Android中为ImageView设置最小和最大尺寸
- 6. 设置QBoxLayout最大尺寸?
- 7. 雅虎地图设置Smartwindow尺寸
- 8. 如何在wxRuby中设置窗口的最小尺寸
- 9. 如何在fxml中设置容器的最小尺寸
- 10. 在codenameone中设置组件的最小尺寸
- 11. 设置图形图尺寸
- 12. gtk最小尺寸
- 13. 在HTML中设置图像尺寸
- 14. 使用WINAPI设置窗口的最小和最大尺寸
- 15. 设置窗口的最小和最大尺寸
- 16. Android:已下载在ImageView中设置的图像尺寸小于包中的相同尺寸图像
- 17. C++和java中地图对象的最大尺寸是多少?
- 18. GGplot2的最小尺寸geom_text()
- 19. 设置JFrame的最大尺寸
- 20. 设置一个JDialog的最大尺寸?
- 21. NSView在NSSplitView上设置了最小尺寸
- 22. 在mac中设置NS窗口控制器的最小和最大尺寸
- 23. 在UITableViewCell上设置UIImage尺寸图像
- 24. 自定义视图最小尺寸
- 25. 上传WordPresspress最小图片尺寸
- 26. 编辑器10,最小图像尺寸
- 27. 如何设置Vim的最小分割尺寸
- 28. 设置SplitterContainer面板的最小允许尺寸
- 29. Qt 5.3.2 /设置QToolBox项目的最小尺寸
- 30. 如何设置一个xulrunner主窗口的最小尺寸?
使用具有初始大小的构造函数吗? –
构造函数是否会阻止地图调整大小? – Stepan
我投票结束这个问题,因为OP没有做任何研究。有一个正是这个目的的构造函数。 – f1sh