哪个是HashMap的更好选择?

Har*_*Joy 4 java hashmap

哪个是更好的选择:

为什么?

还什么是loadfactormodcountHashMap的财产?

当我在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或更高,它会影响代码吗?

Tom*_*ros 8

你检查过HashMap API Javadoc了吗?

  • 容量是桶的哈希表中的号码
  • 初始容量是简单地在时间中创建哈希表中的容量
  • 负载系数是的哈希表是如何充分允许获得测量之前其容量自动增加

在设置初始尺寸太高时:

对集合视图的迭代需要与HashMap实例的"容量"(桶的数量)加上其大小(键 - 值映射的数量)成比例的时间. 因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要.

负载系数对性能的影响:

作为一般规则,默认加载因子(.75)在时间和空间成本之间提供了良好的权衡.较高的值会减少空间开销,但会增加查找成本(反映在HashMap类的大多数操作中,包括get和put).在设置其初始容量时,应考虑映射中的预期条目数及其加载因子,以便最小化重新散列操作的数量.如果初始容量大于最大条目数除以加载因子,则不会发生重新加载操作.

嗯,简而言之:根据估计的大小和预期的增长率,你必须选择一个近似或相反的方法.

通常,如果您知道Map的元素的初始数量,建议在构建时设置它,避免在初始化时间提前重新开始.

  • 到目前为止最好的答案.+1 (2认同)