哪个是更好的选择:
HashMap初始大小:HashMap hm = new HashMap(10);或HashMap没有初始大小:HashMap hm = new HashMap()?为什么?
还什么是loadfactor和modcount在HashMap的财产?
当我在eclipse中调试我的代码并查看HashMap它的值时,它显示了一个名为loadfactor0.75的属性和一个名为modcount3 的属性.
我在代码中使用hashmap的地方: -
我正在开发一个通信应用程序,你可以说一个聊天应用程序.其中我将所有发送/接收的消息存储在HashMap中.现在因为我无法假设用户将发送/接收多少消息我声明没有初始容量的hashmap.我写的是
Map<String, Map<String, List<String>>> usersMessagesMap = new HashMap<String, Map<String,List<String>>>();
Run Code Online (Sandbox Code Playgroud)
如果我使用它的初始容量为100或更高,它会影响代码吗?
你检查过HashMap API Javadoc了吗?
在设置初始尺寸太高时:
对集合视图的迭代需要与HashMap实例的"容量"(桶的数量)加上其大小(键 - 值映射的数量)成比例的时间. 因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要.
负载系数对性能的影响:
作为一般规则,默认加载因子(.75)在时间和空间成本之间提供了良好的权衡.较高的值会减少空间开销,但会增加查找成本(反映在HashMap类的大多数操作中,包括get和put).在设置其初始容量时,应考虑映射中的预期条目数及其加载因子,以便最小化重新散列操作的数量.如果初始容量大于最大条目数除以加载因子,则不会发生重新加载操作.
嗯,简而言之:根据估计的大小和预期的增长率,你必须选择一个近似或相反的方法.
通常,如果您知道Map的元素的初始数量,建议在构建时设置它,避免在初始化时间提前重新开始.