而负载因子表示一个散列表的空间的使用程度,有这样一个公式:initailCapacity*loadFactor=HashMap的容量。
所以负载因子越大则散列表的装填程度越高,也就是能容纳更多的元素,元素多了,链表大了,所以此时索引效率就会降低。
反之,负载因子越小则链表中的数据量就越稀疏,此时会对空间造成烂费,但是此时索引效率高。
当 HashMap 中的结点个数超过数组大小loadFactor(加载因子) 时, 就会进数组扩容,loadFactor 的默认值为 0.75。也就是说,默认情况下,数组大小为 16,那么当 HashMap中结点个数超过 160.75=12 的时候, 就把数组的大小扩展为2*16=32, 即扩大一倍, 然后重新计算每个元素在数组中的位置, 并放进去, 而这是一个非常消耗性能的操作。
在线程竞争激烈的情况下 HashTable 的效率非常低下。 因为当一个线程访问HashTable 的同步方法时, 访问其他同步方法的线程就可能会进入阻塞或者轮训状态。 如线程 1 使用 put 进行添加元素, 线程 2 不但不能使用 put 方法添加元素, 并且也不能使用get 方法来获取元素, 所以竞争越激烈效率越低
在 HashMap 中, null 可以作为键, 这样的键只有一个; 可以有一个或多个键所对应的值为 null。 当 get()方法返回 null 值时, 既可以表示 HashMap 中没有该键, 也可以表示该键所对应的值为 null。 因此, 在 HashMap 中不能用 get()方法来判断 HashMap 中是否存在某个键, 而应该用 containsKey()方法来判断。 Hashtable 的键值都不能为 null, 所以可以用 get()方法来判断是否含有某个键。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有